

/* this ALWAYS GENERATED file contains the definitions for the interfaces */


 /* File created by MIDL compiler version 7.00.0408 */
/* Compiler settings for dmalgo.idl:
    Oicf, W1, Zp8, env=Win32 (32b run)
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING(  )

#pragma warning( disable: 4049 )  /* more than 64k source lines */


/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __dmalgo_h__
#define __dmalgo_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */ 

#ifndef __IDMStringHandler_FWD_DEFINED__
#define __IDMStringHandler_FWD_DEFINED__
typedef interface IDMStringHandler IDMStringHandler;
#endif 	/* __IDMStringHandler_FWD_DEFINED__ */


#ifndef __IDMVariantPtrHandler_FWD_DEFINED__
#define __IDMVariantPtrHandler_FWD_DEFINED__
typedef interface IDMVariantPtrHandler IDMVariantPtrHandler;
#endif 	/* __IDMVariantPtrHandler_FWD_DEFINED__ */


#ifndef __IDMMemoryAllocator_FWD_DEFINED__
#define __IDMMemoryAllocator_FWD_DEFINED__
typedef interface IDMMemoryAllocator IDMMemoryAllocator;
#endif 	/* __IDMMemoryAllocator_FWD_DEFINED__ */


#ifndef __IDMContentMap_FWD_DEFINED__
#define __IDMContentMap_FWD_DEFINED__
typedef interface IDMContentMap IDMContentMap;
#endif 	/* __IDMContentMap_FWD_DEFINED__ */


#ifndef __IDMServices_FWD_DEFINED__
#define __IDMServices_FWD_DEFINED__
typedef interface IDMServices IDMServices;
#endif 	/* __IDMServices_FWD_DEFINED__ */


#ifndef __IDMContextServices_FWD_DEFINED__
#define __IDMContextServices_FWD_DEFINED__
typedef interface IDMContextServices IDMContextServices;
#endif 	/* __IDMContextServices_FWD_DEFINED__ */


#ifndef __IDMModelServices_FWD_DEFINED__
#define __IDMModelServices_FWD_DEFINED__
typedef interface IDMModelServices IDMModelServices;
#endif 	/* __IDMModelServices_FWD_DEFINED__ */


#ifndef __IDMAttributeGroup_FWD_DEFINED__
#define __IDMAttributeGroup_FWD_DEFINED__
typedef interface IDMAttributeGroup IDMAttributeGroup;
#endif 	/* __IDMAttributeGroup_FWD_DEFINED__ */


#ifndef __IDMAttributeSet_FWD_DEFINED__
#define __IDMAttributeSet_FWD_DEFINED__
typedef interface IDMAttributeSet IDMAttributeSet;
#endif 	/* __IDMAttributeSet_FWD_DEFINED__ */


#ifndef __IDMCaseOrdinalIterator_FWD_DEFINED__
#define __IDMCaseOrdinalIterator_FWD_DEFINED__
typedef interface IDMCaseOrdinalIterator IDMCaseOrdinalIterator;
#endif 	/* __IDMCaseOrdinalIterator_FWD_DEFINED__ */


#ifndef __IDMCaseProcessor_FWD_DEFINED__
#define __IDMCaseProcessor_FWD_DEFINED__
typedef interface IDMCaseProcessor IDMCaseProcessor;
#endif 	/* __IDMCaseProcessor_FWD_DEFINED__ */


#ifndef __IDMPushCaseSet_FWD_DEFINED__
#define __IDMPushCaseSet_FWD_DEFINED__
typedef interface IDMPushCaseSet IDMPushCaseSet;
#endif 	/* __IDMPushCaseSet_FWD_DEFINED__ */


#ifndef __IDMDAGNavigation_FWD_DEFINED__
#define __IDMDAGNavigation_FWD_DEFINED__
typedef interface IDMDAGNavigation IDMDAGNavigation;
#endif 	/* __IDMDAGNavigation_FWD_DEFINED__ */


#ifndef __IDMAlgorithmNavigation_FWD_DEFINED__
#define __IDMAlgorithmNavigation_FWD_DEFINED__
typedef interface IDMAlgorithmNavigation IDMAlgorithmNavigation;
#endif 	/* __IDMAlgorithmNavigation_FWD_DEFINED__ */


#ifndef __IDMPullCaseSet_FWD_DEFINED__
#define __IDMPullCaseSet_FWD_DEFINED__
typedef interface IDMPullCaseSet IDMPullCaseSet;
#endif 	/* __IDMPullCaseSet_FWD_DEFINED__ */


#ifndef __IDMMarginalStat_FWD_DEFINED__
#define __IDMMarginalStat_FWD_DEFINED__
typedef interface IDMMarginalStat IDMMarginalStat;
#endif 	/* __IDMMarginalStat_FWD_DEFINED__ */


#ifndef __IDMAlgorithm_FWD_DEFINED__
#define __IDMAlgorithm_FWD_DEFINED__
typedef interface IDMAlgorithm IDMAlgorithm;
#endif 	/* __IDMAlgorithm_FWD_DEFINED__ */


#ifndef __IDMClusteringAlgorithm_FWD_DEFINED__
#define __IDMClusteringAlgorithm_FWD_DEFINED__
typedef interface IDMClusteringAlgorithm IDMClusteringAlgorithm;
#endif 	/* __IDMClusteringAlgorithm_FWD_DEFINED__ */


#ifndef __IDMSequenceAlgorithm_FWD_DEFINED__
#define __IDMSequenceAlgorithm_FWD_DEFINED__
typedef interface IDMSequenceAlgorithm IDMSequenceAlgorithm;
#endif 	/* __IDMSequenceAlgorithm_FWD_DEFINED__ */


#ifndef __IDMTimeSeriesAlgorithm_FWD_DEFINED__
#define __IDMTimeSeriesAlgorithm_FWD_DEFINED__
typedef interface IDMTimeSeriesAlgorithm IDMTimeSeriesAlgorithm;
#endif 	/* __IDMTimeSeriesAlgorithm_FWD_DEFINED__ */


#ifndef __IDMAlgorithmFactory_FWD_DEFINED__
#define __IDMAlgorithmFactory_FWD_DEFINED__
typedef interface IDMAlgorithmFactory IDMAlgorithmFactory;
#endif 	/* __IDMAlgorithmFactory_FWD_DEFINED__ */


#ifndef __IDMAlgorithmMetadata_FWD_DEFINED__
#define __IDMAlgorithmMetadata_FWD_DEFINED__
typedef interface IDMAlgorithmMetadata IDMAlgorithmMetadata;
#endif 	/* __IDMAlgorithmMetadata_FWD_DEFINED__ */


#ifndef __IDMCustomFunctionInfo_FWD_DEFINED__
#define __IDMCustomFunctionInfo_FWD_DEFINED__
typedef interface IDMCustomFunctionInfo IDMCustomFunctionInfo;
#endif 	/* __IDMCustomFunctionInfo_FWD_DEFINED__ */


#ifndef __IDMDispatch_FWD_DEFINED__
#define __IDMDispatch_FWD_DEFINED__
typedef interface IDMDispatch IDMDispatch;
#endif 	/* __IDMDispatch_FWD_DEFINED__ */


#ifndef __IDMTableResult_FWD_DEFINED__
#define __IDMTableResult_FWD_DEFINED__
typedef interface IDMTableResult IDMTableResult;
#endif 	/* __IDMTableResult_FWD_DEFINED__ */


#ifndef __IDMPersistenceWriter_FWD_DEFINED__
#define __IDMPersistenceWriter_FWD_DEFINED__
typedef interface IDMPersistenceWriter IDMPersistenceWriter;
#endif 	/* __IDMPersistenceWriter_FWD_DEFINED__ */


#ifndef __IDMPersistenceReader_FWD_DEFINED__
#define __IDMPersistenceReader_FWD_DEFINED__
typedef interface IDMPersistenceReader IDMPersistenceReader;
#endif 	/* __IDMPersistenceReader_FWD_DEFINED__ */


#ifndef __IDMPersist_FWD_DEFINED__
#define __IDMPersist_FWD_DEFINED__
typedef interface IDMPersist IDMPersist;
#endif 	/* __IDMPersist_FWD_DEFINED__ */


/* header files for imported files */
#include "oaidl.h"
#include "oledb.h"
#include "msxml6.h"

#ifdef __cplusplus
extern "C"{
#endif 

void * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void * ); 

/* interface __MIDL_itf_dmalgo_0000 */
/* [local] */ 

typedef ULONG DM_Attribute;

typedef ULONG DM_State;

typedef INT_PTR DM_DAGNodeID;

typedef LONG DM_CaseID;

typedef INT_PTR DMString;

typedef INT_PTR DMVariantPtr;

typedef INT_PTR DMXMLWriterPtr;

typedef INT_PTR DMFunctionRecPtr;

typedef DMString *DMStringPtr;


enum DM_ATTRIBUTE_FLAGS_ENUM
    {	DMAF_CONTINUOUS	= 0x1,
	DMAF_DISCRETE	= 0x2,
	DMAF_BINARY	= 0x4,
	DMAF_NORMAL	= 0x8,
	DMAF_LOGNORMAL	= 0x10,
	DMAF_UNIFORM	= 0x20,
	DMAF_ORDERED	= 0x40,
	DMAF_CYCLICAL	= 0x80,
	DMAF_DISCRETIZED	= 0x100,
	DMAF_INPUT	= 0x200,
	DMAF_OUTPUT	= 0x400,
	DMAF_CASE	= 0x800,
	DMAF_SEQUENCE	= 0x1000,
	DMAF_TIME	= 0x2000,
	DMAF_REGRESSOR	= 0x4000,
	DMAF_PROBABILITY	= 0x8000,
	DMAF_SUPPORT	= 0x10000,
	DMAF_PROBABILITY_VARIANCE	= 0x20000,
	DMAF_PROBABILITY_STDDEV	= 0x40000,
	DMAF_VARIANCE	= 0x80000,
	DMAF_STDDEV	= 0x100000,
	DMAF_CUSTOM	= 0x800000
    } ;
typedef DWORD DM_ATTRIBUTE_FLAGS;


enum DM_ATTRIBUTE_VALUE_FLAGS_ENUM
    {	DMAVF_ATTRIBUTE	= 0x1,
	DMAVF_VALUE	= 0x2,
	DMAVF_TIME	= 0x4,
	DMAVF_SUPPORT	= 0x8,
	DMAVF_VARIANCE	= 0x10,
	DMAVF_PROBABILITY	= 0x20,
	DMAVF_PROB_VARIANCE	= 0x40
    } ;
typedef DWORD DM_ATTRIBUTE_VALUE_FLAGS;


enum DM_STATE_VALUE_TYPE_ENUM
    {	DMSVT_MISSING	= 0x1,
	DMSVT_I4	= 0x2,
	DMSVT_R8	= 0x4
    } ;
typedef DWORD DM_STATE_VALUE_TYPE;


enum DMMarginalRequirementsEnum
    {	DMMR_NONE	= 0,
	DMMR_INPUT_STATS	= 0x2,
	DMMR_OUTPUT_STATS	= 0x4,
	DMMR_ALL_STATS	= ( DMMR_INPUT_STATS | DMMR_OUTPUT_STATS ) 
    } ;
typedef DWORD DMMarginalRequirements;

#define	DM_UNSPECIFIED	( ( ULONG  )-1 )

typedef /* [public][public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_dmalgo_0000_0001
    {
    ULONG iFlag;
    DM_State iState;
    } 	DM_STATE_INDEX;

typedef /* [public][public][public][public][public][public][public] */ union __MIDL___MIDL_itf_dmalgo_0000_0002
    {
    DM_STATE_INDEX si;
    DOUBLE r8;
    } 	DM_STATE_VALUE;

typedef /* [public][public][public][public] */ struct __MIDL___MIDL_itf_dmalgo_0000_0003
    {
    DM_STATE_VALUE Value;
    DOUBLE dblSupport;
    DOUBLE dblVariance;
    DOUBLE dblProbability;
    DOUBLE dblAdjustedProbability;
    DOUBLE dblProbabilityVariance;
    LONG lValueType;
    } 	DM_STATE_STAT;

typedef /* [public][public][public][public][public][public][public] */ struct __MIDL___MIDL_itf_dmalgo_0000_0004
    {
    DM_Attribute Attribute;
    DM_STATE_VALUE Value;
    } 	DM_ATTRIBUTE_VALUE;

typedef /* [public][public][public][public][public] */ struct __MIDL___MIDL_itf_dmalgo_0000_0005
    {
    DM_Attribute Attribute;
    DMStringPtr strNodeID;
    DOUBLE dblMin;
    DOUBLE dblMax;
    DOUBLE dblExistingSupport;
    DOUBLE dblExistingProbability;
    DOUBLE dblExistingAdjustedProbability;
    ULONG ulStates;
    DM_STATE_STAT *rgStateStats;
    } 	DM_ATTRIBUTE_STAT;

typedef struct _DM_COLUMN_INFO
    {
    DMString *pstrColumnName;
    VARTYPE vtColumnType;
    ULONG cColumnSize;
    BOOL fIsTable;
    struct DM_COLUMN_INFO_COLLECTION
        {
        ULONG cColumns;
        struct _DM_COLUMN_INFO *pColInfo;
        } 	collTableColumns;
    } 	DM_COLUMN_INFO;


enum DM_PREDICTION_FLAGS_ENUM
    {	DMPF_EXCLUDE_INPUT_ATTRIBUTES	= 0x1,
	DMPF_ONLY_INPUT_ATTRIBUTES	= 0x2,
	DMPF_EXCLUDE_MISSING_STATE	= 0x4,
	DMPF_USE_CONTENT_ONLY	= 0x8,
	DMPF_ATTRIBUTE_SORT_ASCENDING	= 0x10,
	DMPF_STATE_SORT_ASCENDING	= 0x20,
	DMPF_INCLUDE_STATS	= 0x100,
	DMPF_INCLUDE_NODE_ID	= 0x200,
	DMPF_INCLUDE_TIME	= 0x400,
	DMPF_ATT_SORT_MASK	= 0xf000,
	DMPF_ATT_SORT_EXIST_SUPPORT	= 0x1000,
	DMPF_ATT_SORT_EXIST_PROB	= 0x2000,
	DMPF_ATT_SORT_EXIST_ADJUST_PROB	= 0x4000,
	DMPF_STATE_SORT_MASK	= 0xf0000,
	DMPF_STATE_SORT_PROB	= 0x10000,
	DMPF_STATE_SORT_SUPPORT	= 0x20000,
	DMPF_STATE_SORT_VARIANCE	= 0x40000,
	DMPF_STATE_SORT_ADJUST_PROB	= 0x80000
    } ;
typedef DWORD DM_PREDICTION_FLAGS;


enum DM_NODE_FLAGS_ENUM
    {	DMNF_CONTENT_NODE	= 0,
	DMNF_DIMENSION_CONTENT_NODE	= 1
    } ;
typedef DWORD DM_NODE_FLAGS;


enum DM_NODE_PROP_ENUM
    {	DMNP_ATTRIBUTES	= 0x1601,
	DMNP_TYPE	= 0x1602,
	DMNP_CONDITION_XML	= 0x1603,
	DMNP_RULE_XML	= 0x1604,
	DMNP_PROBABILITY	= 0x1605,
	DMNP_MARGINAL_PROBABILITY	= 0x1606,
	DMNP_CAPTION	= 0x1607,
	DMNP_SUPPORT	= 0x1608,
	DMNP_MODEL_COLUMN_NAME	= 0x1609,
	DMNP_DESCRIPTION	= 0x160a,
	DMNP_SCORE	= 0x160b,
	DMNP_SHORT_CAPTION	= 0x160c,
	DMNP_DISTRIBUTION	= 0x160d
    } ;
typedef DWORD DM_NODE_PROP;


enum DM_MiningColumnContent
    {	DM_MININGCOLUMN_CONTENT_DISCRETE	= 2,
	DM_MININGCOLUMN_CONTENT_CONTINUOUS	= 3,
	DM_MININGCOLUMN_CONTENT_DISCRETIZED	= 4,
	DM_MININGCOLUMN_CONTENT_SEQUENCETIME	= 5,
	DM_MININGCOLUMN_CONTENT_ORDERED	= 6,
	DM_MININGCOLUMN_CONTENT_CYCLICAL	= 7,
	DM_MININGCOLUMN_CONTENT_NESTEDTABLE	= 8,
	DM_MININGCOLUMN_CONTENT_KEY	= 9,
	DM_MININGCOLUMN_CONTENT_KEY_SEQUENCE	= 10,
	DM_MININGCOLUMN_CONTENT_KEY_TIME	= 11,
	DM_MININGCOLUMN_CONTENT_PROBABILITY	= 12,
	DM_MININGCOLUMN_CONTENT_VARIANCE	= 13,
	DM_MININGCOLUMN_CONTENT_STDDEV	= 14,
	DM_MININGCOLUMN_CONTENT_SUPPORT	= 15,
	DM_MININGCOLUMN_CONTENT_PROBABILITYVARIANCE	= 16,
	DM_MININGCOLUMN_CONTENT_PROBABILITYSTDDEV	= 17
    } ;

enum DM_MODELING_FLAG_ENUM
    {	DM_MODELING_FLAG_INVALID	= -1,
	DM_MODELING_FLAG_NULL	= 0,
	DM_MODELING_FLAG_BINARY	= 1,
	DM_MODELING_FLAG_NOT_NULL	= 2,
	DM_MODELING_FLAG_REGRESSOR	= 4,
	DM_MODELING_FLAG_CUSTOM_BASE	= 10000
    } ;
typedef LONG DM_MODELING_FLAG;

// Available Microsoft algorithm content viewers
#define DM_VIEWERTYPE_MICROSOFT_TREE                L"Microsoft_Tree_Viewer"
#define DM_VIEWERTYPE_MICROSOFT_CLUSTER             L"Microsoft_Cluster_Viewer"
#define DM_VIEWERTYPE_MICROSOFT_SEQUENCE_CLUSTER    L"Microsoft_SequenceCluster_Viewer"
#define DM_VIEWERTYPE_MICROSOFT_TIME_SERIES         L"Microsoft_TimeSeries_Viewer"
#define DM_VIEWERTYPE_MICROSOFT_NAIVEBAYESIAN       L"Microsoft_NaiveBayesian_Viewer"
#define DM_VIEWERTYPE_MICROSOFT_ASSOCIATION_RULES   L"Microsoft_AssociationRules_Viewer"
#define DM_VIEWERTYPE_MICROSOFT_NEURAL_NETWORK      L"Microsoft_NeuralNetwork_Viewer"


extern RPC_IF_HANDLE __MIDL_itf_dmalgo_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_dmalgo_0000_v0_0_s_ifspec;

#ifndef __IDMStringHandler_INTERFACE_DEFINED__
#define __IDMStringHandler_INTERFACE_DEFINED__

/* interface IDMStringHandler */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMStringHandler;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("67C5FB38-DC3C-4d4f-B6E8-ED0BE4E2FCB3")
    IDMStringHandler : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE InitializeStringHandle( 
            /* [in] */ DMString *in_phString) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsStringEmpty( 
            /* [in] */ DMString *in_phString,
            /* [out] */ BOOL *out_pIsEmpty) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CreateNewStringHandle( 
            /* [out] */ DMString **out_phString) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DestroyStringHandle( 
            /* [in] */ DMString *in_phString) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CopyHandleToBuffer( 
            /* [in] */ DMString *in_hString,
            /* [in] */ WCHAR *in_pchBuff,
            /* [out][in] */ UINT *io_pcchBuffLength) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CopyBufferToHandle( 
            /* [in] */ DMString *in_hString,
            /* [in] */ const WCHAR *in_pchBuff,
            /* [in] */ INT in_cchLength) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetConstStringFromHandle( 
            /* [in] */ DMString *in_hString,
            /* [out] */ const WCHAR **out_ppchBuff,
            /* [out] */ UINT *out_pcchBuffLength) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE AttachHandleToBSTR( 
            /* [in] */ DMString *in_hString,
            /* [in] */ BSTR *in_pBstr) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMStringHandlerVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMStringHandler * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMStringHandler * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMStringHandler * This);
        
        HRESULT ( STDMETHODCALLTYPE *InitializeStringHandle )( 
            IDMStringHandler * This,
            /* [in] */ DMString *in_phString);
        
        HRESULT ( STDMETHODCALLTYPE *IsStringEmpty )( 
            IDMStringHandler * This,
            /* [in] */ DMString *in_phString,
            /* [out] */ BOOL *out_pIsEmpty);
        
        HRESULT ( STDMETHODCALLTYPE *CreateNewStringHandle )( 
            IDMStringHandler * This,
            /* [out] */ DMString **out_phString);
        
        HRESULT ( STDMETHODCALLTYPE *DestroyStringHandle )( 
            IDMStringHandler * This,
            /* [in] */ DMString *in_phString);
        
        HRESULT ( STDMETHODCALLTYPE *CopyHandleToBuffer )( 
            IDMStringHandler * This,
            /* [in] */ DMString *in_hString,
            /* [in] */ WCHAR *in_pchBuff,
            /* [out][in] */ UINT *io_pcchBuffLength);
        
        HRESULT ( STDMETHODCALLTYPE *CopyBufferToHandle )( 
            IDMStringHandler * This,
            /* [in] */ DMString *in_hString,
            /* [in] */ const WCHAR *in_pchBuff,
            /* [in] */ INT in_cchLength);
        
        HRESULT ( STDMETHODCALLTYPE *GetConstStringFromHandle )( 
            IDMStringHandler * This,
            /* [in] */ DMString *in_hString,
            /* [out] */ const WCHAR **out_ppchBuff,
            /* [out] */ UINT *out_pcchBuffLength);
        
        HRESULT ( STDMETHODCALLTYPE *AttachHandleToBSTR )( 
            IDMStringHandler * This,
            /* [in] */ DMString *in_hString,
            /* [in] */ BSTR *in_pBstr);
        
        END_INTERFACE
    } IDMStringHandlerVtbl;

    interface IDMStringHandler
    {
        CONST_VTBL struct IDMStringHandlerVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMStringHandler_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMStringHandler_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMStringHandler_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMStringHandler_InitializeStringHandle(This,in_phString)	\
    ( (This)->lpVtbl -> InitializeStringHandle(This,in_phString) ) 

#define IDMStringHandler_IsStringEmpty(This,in_phString,out_pIsEmpty)	\
    ( (This)->lpVtbl -> IsStringEmpty(This,in_phString,out_pIsEmpty) ) 

#define IDMStringHandler_CreateNewStringHandle(This,out_phString)	\
    ( (This)->lpVtbl -> CreateNewStringHandle(This,out_phString) ) 

#define IDMStringHandler_DestroyStringHandle(This,in_phString)	\
    ( (This)->lpVtbl -> DestroyStringHandle(This,in_phString) ) 

#define IDMStringHandler_CopyHandleToBuffer(This,in_hString,in_pchBuff,io_pcchBuffLength)	\
    ( (This)->lpVtbl -> CopyHandleToBuffer(This,in_hString,in_pchBuff,io_pcchBuffLength) ) 

#define IDMStringHandler_CopyBufferToHandle(This,in_hString,in_pchBuff,in_cchLength)	\
    ( (This)->lpVtbl -> CopyBufferToHandle(This,in_hString,in_pchBuff,in_cchLength) ) 

#define IDMStringHandler_GetConstStringFromHandle(This,in_hString,out_ppchBuff,out_pcchBuffLength)	\
    ( (This)->lpVtbl -> GetConstStringFromHandle(This,in_hString,out_ppchBuff,out_pcchBuffLength) ) 

#define IDMStringHandler_AttachHandleToBSTR(This,in_hString,in_pBstr)	\
    ( (This)->lpVtbl -> AttachHandleToBSTR(This,in_hString,in_pBstr) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMStringHandler_InitializeStringHandle_Proxy( 
    IDMStringHandler * This,
    /* [in] */ DMString *in_phString);


void __RPC_STUB IDMStringHandler_InitializeStringHandle_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMStringHandler_IsStringEmpty_Proxy( 
    IDMStringHandler * This,
    /* [in] */ DMString *in_phString,
    /* [out] */ BOOL *out_pIsEmpty);


void __RPC_STUB IDMStringHandler_IsStringEmpty_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMStringHandler_CreateNewStringHandle_Proxy( 
    IDMStringHandler * This,
    /* [out] */ DMString **out_phString);


void __RPC_STUB IDMStringHandler_CreateNewStringHandle_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMStringHandler_DestroyStringHandle_Proxy( 
    IDMStringHandler * This,
    /* [in] */ DMString *in_phString);


void __RPC_STUB IDMStringHandler_DestroyStringHandle_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMStringHandler_CopyHandleToBuffer_Proxy( 
    IDMStringHandler * This,
    /* [in] */ DMString *in_hString,
    /* [in] */ WCHAR *in_pchBuff,
    /* [out][in] */ UINT *io_pcchBuffLength);


void __RPC_STUB IDMStringHandler_CopyHandleToBuffer_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMStringHandler_CopyBufferToHandle_Proxy( 
    IDMStringHandler * This,
    /* [in] */ DMString *in_hString,
    /* [in] */ const WCHAR *in_pchBuff,
    /* [in] */ INT in_cchLength);


void __RPC_STUB IDMStringHandler_CopyBufferToHandle_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMStringHandler_GetConstStringFromHandle_Proxy( 
    IDMStringHandler * This,
    /* [in] */ DMString *in_hString,
    /* [out] */ const WCHAR **out_ppchBuff,
    /* [out] */ UINT *out_pcchBuffLength);


void __RPC_STUB IDMStringHandler_GetConstStringFromHandle_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMStringHandler_AttachHandleToBSTR_Proxy( 
    IDMStringHandler * This,
    /* [in] */ DMString *in_hString,
    /* [in] */ BSTR *in_pBstr);


void __RPC_STUB IDMStringHandler_AttachHandleToBSTR_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMStringHandler_INTERFACE_DEFINED__ */


#ifndef __IDMVariantPtrHandler_INTERFACE_DEFINED__
#define __IDMVariantPtrHandler_INTERFACE_DEFINED__

/* interface IDMVariantPtrHandler */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMVariantPtrHandler;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("5198D1FB-5EC0-4a1c-ACD8-4F6F3F4EB45C")
    IDMVariantPtrHandler : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE CreateNewVariantHandle( 
            /* [out] */ DMVariantPtr *out_phVariant) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DestroyVariantHandle( 
            /* [in] */ DMVariantPtr in_phVariant) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CopyVariantToHandle( 
            /* [in] */ DMVariantPtr in_hVariant,
            /* [in] */ VARIANT *in_pSrcVariant) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CopyHandleToVariant( 
            /* [in] */ DMVariantPtr in_hVariant,
            /* [out][in] */ VARIANT *in_pDestVariant) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE AttachHandleToVariant( 
            /* [in] */ DMVariantPtr in_hVariant,
            /* [in] */ VARIANT *in_pSrcVariant) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE DetachHandleVariant( 
            /* [in] */ DMVariantPtr in_hVariant,
            /* [out][in] */ VARIANT *in_pDestVariant) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMVariantPtrHandlerVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMVariantPtrHandler * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMVariantPtrHandler * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMVariantPtrHandler * This);
        
        HRESULT ( STDMETHODCALLTYPE *CreateNewVariantHandle )( 
            IDMVariantPtrHandler * This,
            /* [out] */ DMVariantPtr *out_phVariant);
        
        HRESULT ( STDMETHODCALLTYPE *DestroyVariantHandle )( 
            IDMVariantPtrHandler * This,
            /* [in] */ DMVariantPtr in_phVariant);
        
        HRESULT ( STDMETHODCALLTYPE *CopyVariantToHandle )( 
            IDMVariantPtrHandler * This,
            /* [in] */ DMVariantPtr in_hVariant,
            /* [in] */ VARIANT *in_pSrcVariant);
        
        HRESULT ( STDMETHODCALLTYPE *CopyHandleToVariant )( 
            IDMVariantPtrHandler * This,
            /* [in] */ DMVariantPtr in_hVariant,
            /* [out][in] */ VARIANT *in_pDestVariant);
        
        HRESULT ( STDMETHODCALLTYPE *AttachHandleToVariant )( 
            IDMVariantPtrHandler * This,
            /* [in] */ DMVariantPtr in_hVariant,
            /* [in] */ VARIANT *in_pSrcVariant);
        
        HRESULT ( STDMETHODCALLTYPE *DetachHandleVariant )( 
            IDMVariantPtrHandler * This,
            /* [in] */ DMVariantPtr in_hVariant,
            /* [out][in] */ VARIANT *in_pDestVariant);
        
        END_INTERFACE
    } IDMVariantPtrHandlerVtbl;

    interface IDMVariantPtrHandler
    {
        CONST_VTBL struct IDMVariantPtrHandlerVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMVariantPtrHandler_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMVariantPtrHandler_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMVariantPtrHandler_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMVariantPtrHandler_CreateNewVariantHandle(This,out_phVariant)	\
    ( (This)->lpVtbl -> CreateNewVariantHandle(This,out_phVariant) ) 

#define IDMVariantPtrHandler_DestroyVariantHandle(This,in_phVariant)	\
    ( (This)->lpVtbl -> DestroyVariantHandle(This,in_phVariant) ) 

#define IDMVariantPtrHandler_CopyVariantToHandle(This,in_hVariant,in_pSrcVariant)	\
    ( (This)->lpVtbl -> CopyVariantToHandle(This,in_hVariant,in_pSrcVariant) ) 

#define IDMVariantPtrHandler_CopyHandleToVariant(This,in_hVariant,in_pDestVariant)	\
    ( (This)->lpVtbl -> CopyHandleToVariant(This,in_hVariant,in_pDestVariant) ) 

#define IDMVariantPtrHandler_AttachHandleToVariant(This,in_hVariant,in_pSrcVariant)	\
    ( (This)->lpVtbl -> AttachHandleToVariant(This,in_hVariant,in_pSrcVariant) ) 

#define IDMVariantPtrHandler_DetachHandleVariant(This,in_hVariant,in_pDestVariant)	\
    ( (This)->lpVtbl -> DetachHandleVariant(This,in_hVariant,in_pDestVariant) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMVariantPtrHandler_CreateNewVariantHandle_Proxy( 
    IDMVariantPtrHandler * This,
    /* [out] */ DMVariantPtr *out_phVariant);


void __RPC_STUB IDMVariantPtrHandler_CreateNewVariantHandle_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMVariantPtrHandler_DestroyVariantHandle_Proxy( 
    IDMVariantPtrHandler * This,
    /* [in] */ DMVariantPtr in_phVariant);


void __RPC_STUB IDMVariantPtrHandler_DestroyVariantHandle_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMVariantPtrHandler_CopyVariantToHandle_Proxy( 
    IDMVariantPtrHandler * This,
    /* [in] */ DMVariantPtr in_hVariant,
    /* [in] */ VARIANT *in_pSrcVariant);


void __RPC_STUB IDMVariantPtrHandler_CopyVariantToHandle_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMVariantPtrHandler_CopyHandleToVariant_Proxy( 
    IDMVariantPtrHandler * This,
    /* [in] */ DMVariantPtr in_hVariant,
    /* [out][in] */ VARIANT *in_pDestVariant);


void __RPC_STUB IDMVariantPtrHandler_CopyHandleToVariant_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMVariantPtrHandler_AttachHandleToVariant_Proxy( 
    IDMVariantPtrHandler * This,
    /* [in] */ DMVariantPtr in_hVariant,
    /* [in] */ VARIANT *in_pSrcVariant);


void __RPC_STUB IDMVariantPtrHandler_AttachHandleToVariant_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMVariantPtrHandler_DetachHandleVariant_Proxy( 
    IDMVariantPtrHandler * This,
    /* [in] */ DMVariantPtr in_hVariant,
    /* [out][in] */ VARIANT *in_pDestVariant);


void __RPC_STUB IDMVariantPtrHandler_DetachHandleVariant_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMVariantPtrHandler_INTERFACE_DEFINED__ */


#ifndef __IDMMemoryAllocator_INTERFACE_DEFINED__
#define __IDMMemoryAllocator_INTERFACE_DEFINED__

/* interface IDMMemoryAllocator */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMMemoryAllocator;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("9B816DAA-2032-4a0d-9F14-812649B85342")
    IDMMemoryAllocator : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Alloc( 
            /* [in] */ UINT in_cSizeInBytes,
            /* [out] */ byte **out_ppBuffer) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Realloc( 
            /* [in] */ byte *in_pPrevBuffer,
            /* [in] */ UINT in_cNewSizeInBytes,
            /* [out] */ byte **out_ppBuffer) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Free( 
            /* [in] */ byte *in_pBuffer) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMMemoryAllocatorVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMMemoryAllocator * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMMemoryAllocator * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMMemoryAllocator * This);
        
        HRESULT ( STDMETHODCALLTYPE *Alloc )( 
            IDMMemoryAllocator * This,
            /* [in] */ UINT in_cSizeInBytes,
            /* [out] */ byte **out_ppBuffer);
        
        HRESULT ( STDMETHODCALLTYPE *Realloc )( 
            IDMMemoryAllocator * This,
            /* [in] */ byte *in_pPrevBuffer,
            /* [in] */ UINT in_cNewSizeInBytes,
            /* [out] */ byte **out_ppBuffer);
        
        HRESULT ( STDMETHODCALLTYPE *Free )( 
            IDMMemoryAllocator * This,
            /* [in] */ byte *in_pBuffer);
        
        END_INTERFACE
    } IDMMemoryAllocatorVtbl;

    interface IDMMemoryAllocator
    {
        CONST_VTBL struct IDMMemoryAllocatorVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMMemoryAllocator_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMMemoryAllocator_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMMemoryAllocator_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMMemoryAllocator_Alloc(This,in_cSizeInBytes,out_ppBuffer)	\
    ( (This)->lpVtbl -> Alloc(This,in_cSizeInBytes,out_ppBuffer) ) 

#define IDMMemoryAllocator_Realloc(This,in_pPrevBuffer,in_cNewSizeInBytes,out_ppBuffer)	\
    ( (This)->lpVtbl -> Realloc(This,in_pPrevBuffer,in_cNewSizeInBytes,out_ppBuffer) ) 

#define IDMMemoryAllocator_Free(This,in_pBuffer)	\
    ( (This)->lpVtbl -> Free(This,in_pBuffer) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMMemoryAllocator_Alloc_Proxy( 
    IDMMemoryAllocator * This,
    /* [in] */ UINT in_cSizeInBytes,
    /* [out] */ byte **out_ppBuffer);


void __RPC_STUB IDMMemoryAllocator_Alloc_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMMemoryAllocator_Realloc_Proxy( 
    IDMMemoryAllocator * This,
    /* [in] */ byte *in_pPrevBuffer,
    /* [in] */ UINT in_cNewSizeInBytes,
    /* [out] */ byte **out_ppBuffer);


void __RPC_STUB IDMMemoryAllocator_Realloc_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMMemoryAllocator_Free_Proxy( 
    IDMMemoryAllocator * This,
    /* [in] */ byte *in_pBuffer);


void __RPC_STUB IDMMemoryAllocator_Free_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMMemoryAllocator_INTERFACE_DEFINED__ */


#ifndef __IDMContentMap_INTERFACE_DEFINED__
#define __IDMContentMap_INTERFACE_DEFINED__

/* interface IDMContentMap */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMContentMap;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("C4AFFD03-36A6-426e-9BBC-73FAF51A4A89")
    IDMContentMap : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE IsEmpty( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE FindNodeName( 
            /* [in] */ DMString *in_pstrNodeCaption,
            /* [out] */ DMString **out_ppstrNodeName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE FindNodeCaption( 
            /* [in] */ DMString *in_pstrNodeName,
            /* [out] */ DMString **out_ppstrNodeCaption) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMContentMapVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMContentMap * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMContentMap * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMContentMap * This);
        
        HRESULT ( STDMETHODCALLTYPE *IsEmpty )( 
            IDMContentMap * This);
        
        HRESULT ( STDMETHODCALLTYPE *FindNodeName )( 
            IDMContentMap * This,
            /* [in] */ DMString *in_pstrNodeCaption,
            /* [out] */ DMString **out_ppstrNodeName);
        
        HRESULT ( STDMETHODCALLTYPE *FindNodeCaption )( 
            IDMContentMap * This,
            /* [in] */ DMString *in_pstrNodeName,
            /* [out] */ DMString **out_ppstrNodeCaption);
        
        END_INTERFACE
    } IDMContentMapVtbl;

    interface IDMContentMap
    {
        CONST_VTBL struct IDMContentMapVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMContentMap_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMContentMap_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMContentMap_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMContentMap_IsEmpty(This)	\
    ( (This)->lpVtbl -> IsEmpty(This) ) 

#define IDMContentMap_FindNodeName(This,in_pstrNodeCaption,out_ppstrNodeName)	\
    ( (This)->lpVtbl -> FindNodeName(This,in_pstrNodeCaption,out_ppstrNodeName) ) 

#define IDMContentMap_FindNodeCaption(This,in_pstrNodeName,out_ppstrNodeCaption)	\
    ( (This)->lpVtbl -> FindNodeCaption(This,in_pstrNodeName,out_ppstrNodeCaption) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMContentMap_IsEmpty_Proxy( 
    IDMContentMap * This);


void __RPC_STUB IDMContentMap_IsEmpty_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMContentMap_FindNodeName_Proxy( 
    IDMContentMap * This,
    /* [in] */ DMString *in_pstrNodeCaption,
    /* [out] */ DMString **out_ppstrNodeName);


void __RPC_STUB IDMContentMap_FindNodeName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMContentMap_FindNodeCaption_Proxy( 
    IDMContentMap * This,
    /* [in] */ DMString *in_pstrNodeName,
    /* [out] */ DMString **out_ppstrNodeCaption);


void __RPC_STUB IDMContentMap_FindNodeCaption_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMContentMap_INTERFACE_DEFINED__ */


#ifndef __IDMServices_INTERFACE_DEFINED__
#define __IDMServices_INTERFACE_DEFINED__

/* interface IDMServices */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMServices;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("B1F8321F-BF73-4029-B4FA-8369390DAF92")
    IDMServices : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetStringAlloc( 
            /* [out] */ IDMMemoryAllocator **out_ppAlloc) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetVectorAlloc( 
            /* [out] */ IDMMemoryAllocator **out_ppAlloc) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetGeneralAlloc( 
            /* [out] */ IDMMemoryAllocator **out_ppAlloc) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetStringHandler( 
            /* [out] */ IDMStringHandler **out_ppStringHandler) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetVariantHandler( 
            /* [out] */ IDMVariantPtrHandler **out_ppVarHandler) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetXMLWriter( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CreateTemporaryFile( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMServicesVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMServices * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMServices * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMServices * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetStringAlloc )( 
            IDMServices * This,
            /* [out] */ IDMMemoryAllocator **out_ppAlloc);
        
        HRESULT ( STDMETHODCALLTYPE *GetVectorAlloc )( 
            IDMServices * This,
            /* [out] */ IDMMemoryAllocator **out_ppAlloc);
        
        HRESULT ( STDMETHODCALLTYPE *GetGeneralAlloc )( 
            IDMServices * This,
            /* [out] */ IDMMemoryAllocator **out_ppAlloc);
        
        HRESULT ( STDMETHODCALLTYPE *GetStringHandler )( 
            IDMServices * This,
            /* [out] */ IDMStringHandler **out_ppStringHandler);
        
        HRESULT ( STDMETHODCALLTYPE *GetVariantHandler )( 
            IDMServices * This,
            /* [out] */ IDMVariantPtrHandler **out_ppVarHandler);
        
        HRESULT ( STDMETHODCALLTYPE *GetXMLWriter )( 
            IDMServices * This);
        
        HRESULT ( STDMETHODCALLTYPE *CreateTemporaryFile )( 
            IDMServices * This);
        
        END_INTERFACE
    } IDMServicesVtbl;

    interface IDMServices
    {
        CONST_VTBL struct IDMServicesVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMServices_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMServices_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMServices_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMServices_GetStringAlloc(This,out_ppAlloc)	\
    ( (This)->lpVtbl -> GetStringAlloc(This,out_ppAlloc) ) 

#define IDMServices_GetVectorAlloc(This,out_ppAlloc)	\
    ( (This)->lpVtbl -> GetVectorAlloc(This,out_ppAlloc) ) 

#define IDMServices_GetGeneralAlloc(This,out_ppAlloc)	\
    ( (This)->lpVtbl -> GetGeneralAlloc(This,out_ppAlloc) ) 

#define IDMServices_GetStringHandler(This,out_ppStringHandler)	\
    ( (This)->lpVtbl -> GetStringHandler(This,out_ppStringHandler) ) 

#define IDMServices_GetVariantHandler(This,out_ppVarHandler)	\
    ( (This)->lpVtbl -> GetVariantHandler(This,out_ppVarHandler) ) 

#define IDMServices_GetXMLWriter(This)	\
    ( (This)->lpVtbl -> GetXMLWriter(This) ) 

#define IDMServices_CreateTemporaryFile(This)	\
    ( (This)->lpVtbl -> CreateTemporaryFile(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMServices_GetStringAlloc_Proxy( 
    IDMServices * This,
    /* [out] */ IDMMemoryAllocator **out_ppAlloc);


void __RPC_STUB IDMServices_GetStringAlloc_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMServices_GetVectorAlloc_Proxy( 
    IDMServices * This,
    /* [out] */ IDMMemoryAllocator **out_ppAlloc);


void __RPC_STUB IDMServices_GetVectorAlloc_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMServices_GetGeneralAlloc_Proxy( 
    IDMServices * This,
    /* [out] */ IDMMemoryAllocator **out_ppAlloc);


void __RPC_STUB IDMServices_GetGeneralAlloc_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMServices_GetStringHandler_Proxy( 
    IDMServices * This,
    /* [out] */ IDMStringHandler **out_ppStringHandler);


void __RPC_STUB IDMServices_GetStringHandler_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMServices_GetVariantHandler_Proxy( 
    IDMServices * This,
    /* [out] */ IDMVariantPtrHandler **out_ppVarHandler);


void __RPC_STUB IDMServices_GetVariantHandler_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMServices_GetXMLWriter_Proxy( 
    IDMServices * This);


void __RPC_STUB IDMServices_GetXMLWriter_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMServices_CreateTemporaryFile_Proxy( 
    IDMServices * This);


void __RPC_STUB IDMServices_CreateTemporaryFile_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMServices_INTERFACE_DEFINED__ */


#ifndef __IDMContextServices_INTERFACE_DEFINED__
#define __IDMContextServices_INTERFACE_DEFINED__

/* interface IDMContextServices */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMContextServices;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("B0739FCB-4651-451e-AAB1-E99773138E59")
    IDMContextServices : public IDMServices
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetContextLocaleID( 
            /* [out] */ LCID *out_pLocaleID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ExtendMemoryEstimate( 
            /* [in] */ ULONG in_ulRequested,
            /* [out] */ LONG *out_plActual,
            /* [in] */ ULONG in_uiTimeout) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ShrinkMemoryEstimate( 
            /* [in] */ ULONG in_ulRequested) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CheckCancelled( void) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMContextServicesVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMContextServices * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMContextServices * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMContextServices * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetStringAlloc )( 
            IDMContextServices * This,
            /* [out] */ IDMMemoryAllocator **out_ppAlloc);
        
        HRESULT ( STDMETHODCALLTYPE *GetVectorAlloc )( 
            IDMContextServices * This,
            /* [out] */ IDMMemoryAllocator **out_ppAlloc);
        
        HRESULT ( STDMETHODCALLTYPE *GetGeneralAlloc )( 
            IDMContextServices * This,
            /* [out] */ IDMMemoryAllocator **out_ppAlloc);
        
        HRESULT ( STDMETHODCALLTYPE *GetStringHandler )( 
            IDMContextServices * This,
            /* [out] */ IDMStringHandler **out_ppStringHandler);
        
        HRESULT ( STDMETHODCALLTYPE *GetVariantHandler )( 
            IDMContextServices * This,
            /* [out] */ IDMVariantPtrHandler **out_ppVarHandler);
        
        HRESULT ( STDMETHODCALLTYPE *GetXMLWriter )( 
            IDMContextServices * This);
        
        HRESULT ( STDMETHODCALLTYPE *CreateTemporaryFile )( 
            IDMContextServices * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetContextLocaleID )( 
            IDMContextServices * This,
            /* [out] */ LCID *out_pLocaleID);
        
        HRESULT ( STDMETHODCALLTYPE *ExtendMemoryEstimate )( 
            IDMContextServices * This,
            /* [in] */ ULONG in_ulRequested,
            /* [out] */ LONG *out_plActual,
            /* [in] */ ULONG in_uiTimeout);
        
        HRESULT ( STDMETHODCALLTYPE *ShrinkMemoryEstimate )( 
            IDMContextServices * This,
            /* [in] */ ULONG in_ulRequested);
        
        HRESULT ( STDMETHODCALLTYPE *CheckCancelled )( 
            IDMContextServices * This);
        
        END_INTERFACE
    } IDMContextServicesVtbl;

    interface IDMContextServices
    {
        CONST_VTBL struct IDMContextServicesVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMContextServices_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMContextServices_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMContextServices_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMContextServices_GetStringAlloc(This,out_ppAlloc)	\
    ( (This)->lpVtbl -> GetStringAlloc(This,out_ppAlloc) ) 

#define IDMContextServices_GetVectorAlloc(This,out_ppAlloc)	\
    ( (This)->lpVtbl -> GetVectorAlloc(This,out_ppAlloc) ) 

#define IDMContextServices_GetGeneralAlloc(This,out_ppAlloc)	\
    ( (This)->lpVtbl -> GetGeneralAlloc(This,out_ppAlloc) ) 

#define IDMContextServices_GetStringHandler(This,out_ppStringHandler)	\
    ( (This)->lpVtbl -> GetStringHandler(This,out_ppStringHandler) ) 

#define IDMContextServices_GetVariantHandler(This,out_ppVarHandler)	\
    ( (This)->lpVtbl -> GetVariantHandler(This,out_ppVarHandler) ) 

#define IDMContextServices_GetXMLWriter(This)	\
    ( (This)->lpVtbl -> GetXMLWriter(This) ) 

#define IDMContextServices_CreateTemporaryFile(This)	\
    ( (This)->lpVtbl -> CreateTemporaryFile(This) ) 


#define IDMContextServices_GetContextLocaleID(This,out_pLocaleID)	\
    ( (This)->lpVtbl -> GetContextLocaleID(This,out_pLocaleID) ) 

#define IDMContextServices_ExtendMemoryEstimate(This,in_ulRequested,out_plActual,in_uiTimeout)	\
    ( (This)->lpVtbl -> ExtendMemoryEstimate(This,in_ulRequested,out_plActual,in_uiTimeout) ) 

#define IDMContextServices_ShrinkMemoryEstimate(This,in_ulRequested)	\
    ( (This)->lpVtbl -> ShrinkMemoryEstimate(This,in_ulRequested) ) 

#define IDMContextServices_CheckCancelled(This)	\
    ( (This)->lpVtbl -> CheckCancelled(This) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMContextServices_GetContextLocaleID_Proxy( 
    IDMContextServices * This,
    /* [out] */ LCID *out_pLocaleID);


void __RPC_STUB IDMContextServices_GetContextLocaleID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMContextServices_ExtendMemoryEstimate_Proxy( 
    IDMContextServices * This,
    /* [in] */ ULONG in_ulRequested,
    /* [out] */ LONG *out_plActual,
    /* [in] */ ULONG in_uiTimeout);


void __RPC_STUB IDMContextServices_ExtendMemoryEstimate_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMContextServices_ShrinkMemoryEstimate_Proxy( 
    IDMContextServices * This,
    /* [in] */ ULONG in_ulRequested);


void __RPC_STUB IDMContextServices_ShrinkMemoryEstimate_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMContextServices_CheckCancelled_Proxy( 
    IDMContextServices * This);


void __RPC_STUB IDMContextServices_CheckCancelled_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMContextServices_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_dmalgo_0207 */
/* [local] */ 


enum DM_PROGRESS_NOTIFICATION_ENUM
    {	DM_PROGRESS_NOTIFY_START	= 0,
	DM_PROGRESS_NOTIFY_CURRENT	= ( DM_PROGRESS_NOTIFY_START + 1 ) ,
	DM_PROGRESS_NOTIFY_END	= ( DM_PROGRESS_NOTIFY_CURRENT + 1 ) 
    } ;
typedef DWORD DM_PROGRESS_NOTIFICATION;


enum DM_PROGRESS_NOTIFICATION_FLAGS_ENUM
    {	DMPNF_USE_CCHTEXT	= 0x1,
	DMPNF_USE_JOBID	= 0x2,
	DMPNF_USE_TIMESTART	= 0x4,
	DMPNF_USE_HRESULT	= 0x8
    } ;
typedef DWORD DM_PROGRESS_NOTIFICATION_FLAGS;

typedef /* [public][public] */ struct __MIDL___MIDL_itf_dmalgo_0207_0001
    {
    DM_PROGRESS_NOTIFICATION NotifCode;
    UINT nCurrent;
    UINT nTotal;
    const WCHAR *pchText;
    UINT cchText;
    HRESULT hResult;
    DM_PROGRESS_NOTIFICATION_FLAGS flags;
    ULONG ulJobID;
    __int64 timeStart;
    } 	DM_PROGRESS_NOTIFICATION_EVENT;



extern RPC_IF_HANDLE __MIDL_itf_dmalgo_0207_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_dmalgo_0207_v0_0_s_ifspec;

#ifndef __IDMModelServices_INTERFACE_DEFINED__
#define __IDMModelServices_INTERFACE_DEFINED__

/* interface IDMModelServices */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMModelServices;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("D5160BE5-7014-4605-923C-ECC83C6B5C72")
    IDMModelServices : public IDMServices
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetModelName( 
            /* [out] */ const WCHAR **out_ppchModelName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetModelLocaleID( 
            /* [out] */ LCID *out_pLocaleID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE FireProgressNotification( 
            /* [in] */ IDMContextServices *in_Context,
            /* [out][in] */ DM_PROGRESS_NOTIFICATION_EVENT *io_pEvent) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetContentMap( 
            /* [in] */ IDMContextServices *in_Context,
            /* [out] */ IDMContentMap **out_ppContentMap) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RenderPMMLModelStatistics( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ISAXContentHandler *in_pXMLWriter) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RenderPMMLMiningSchema( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ISAXContentHandler *in_pXMLWriter) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RenderPMMLModelCreationFlags( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ISAXContentHandler *in_pXMLWriter) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ParsePMMLModelStatistics( 
            /* [in] */ IDMContextServices *in_pContext) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ContinuePMMLParsing( 
            /* [in] */ IDMContextServices *in_pContext) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMModelServicesVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMModelServices * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMModelServices * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMModelServices * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetStringAlloc )( 
            IDMModelServices * This,
            /* [out] */ IDMMemoryAllocator **out_ppAlloc);
        
        HRESULT ( STDMETHODCALLTYPE *GetVectorAlloc )( 
            IDMModelServices * This,
            /* [out] */ IDMMemoryAllocator **out_ppAlloc);
        
        HRESULT ( STDMETHODCALLTYPE *GetGeneralAlloc )( 
            IDMModelServices * This,
            /* [out] */ IDMMemoryAllocator **out_ppAlloc);
        
        HRESULT ( STDMETHODCALLTYPE *GetStringHandler )( 
            IDMModelServices * This,
            /* [out] */ IDMStringHandler **out_ppStringHandler);
        
        HRESULT ( STDMETHODCALLTYPE *GetVariantHandler )( 
            IDMModelServices * This,
            /* [out] */ IDMVariantPtrHandler **out_ppVarHandler);
        
        HRESULT ( STDMETHODCALLTYPE *GetXMLWriter )( 
            IDMModelServices * This);
        
        HRESULT ( STDMETHODCALLTYPE *CreateTemporaryFile )( 
            IDMModelServices * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetModelName )( 
            IDMModelServices * This,
            /* [out] */ const WCHAR **out_ppchModelName);
        
        HRESULT ( STDMETHODCALLTYPE *GetModelLocaleID )( 
            IDMModelServices * This,
            /* [out] */ LCID *out_pLocaleID);
        
        HRESULT ( STDMETHODCALLTYPE *FireProgressNotification )( 
            IDMModelServices * This,
            /* [in] */ IDMContextServices *in_Context,
            /* [out][in] */ DM_PROGRESS_NOTIFICATION_EVENT *io_pEvent);
        
        HRESULT ( STDMETHODCALLTYPE *GetContentMap )( 
            IDMModelServices * This,
            /* [in] */ IDMContextServices *in_Context,
            /* [out] */ IDMContentMap **out_ppContentMap);
        
        HRESULT ( STDMETHODCALLTYPE *RenderPMMLModelStatistics )( 
            IDMModelServices * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ISAXContentHandler *in_pXMLWriter);
        
        HRESULT ( STDMETHODCALLTYPE *RenderPMMLMiningSchema )( 
            IDMModelServices * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ISAXContentHandler *in_pXMLWriter);
        
        HRESULT ( STDMETHODCALLTYPE *RenderPMMLModelCreationFlags )( 
            IDMModelServices * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ISAXContentHandler *in_pXMLWriter);
        
        HRESULT ( STDMETHODCALLTYPE *ParsePMMLModelStatistics )( 
            IDMModelServices * This,
            /* [in] */ IDMContextServices *in_pContext);
        
        HRESULT ( STDMETHODCALLTYPE *ContinuePMMLParsing )( 
            IDMModelServices * This,
            /* [in] */ IDMContextServices *in_pContext);
        
        END_INTERFACE
    } IDMModelServicesVtbl;

    interface IDMModelServices
    {
        CONST_VTBL struct IDMModelServicesVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMModelServices_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMModelServices_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMModelServices_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMModelServices_GetStringAlloc(This,out_ppAlloc)	\
    ( (This)->lpVtbl -> GetStringAlloc(This,out_ppAlloc) ) 

#define IDMModelServices_GetVectorAlloc(This,out_ppAlloc)	\
    ( (This)->lpVtbl -> GetVectorAlloc(This,out_ppAlloc) ) 

#define IDMModelServices_GetGeneralAlloc(This,out_ppAlloc)	\
    ( (This)->lpVtbl -> GetGeneralAlloc(This,out_ppAlloc) ) 

#define IDMModelServices_GetStringHandler(This,out_ppStringHandler)	\
    ( (This)->lpVtbl -> GetStringHandler(This,out_ppStringHandler) ) 

#define IDMModelServices_GetVariantHandler(This,out_ppVarHandler)	\
    ( (This)->lpVtbl -> GetVariantHandler(This,out_ppVarHandler) ) 

#define IDMModelServices_GetXMLWriter(This)	\
    ( (This)->lpVtbl -> GetXMLWriter(This) ) 

#define IDMModelServices_CreateTemporaryFile(This)	\
    ( (This)->lpVtbl -> CreateTemporaryFile(This) ) 


#define IDMModelServices_GetModelName(This,out_ppchModelName)	\
    ( (This)->lpVtbl -> GetModelName(This,out_ppchModelName) ) 

#define IDMModelServices_GetModelLocaleID(This,out_pLocaleID)	\
    ( (This)->lpVtbl -> GetModelLocaleID(This,out_pLocaleID) ) 

#define IDMModelServices_FireProgressNotification(This,in_Context,io_pEvent)	\
    ( (This)->lpVtbl -> FireProgressNotification(This,in_Context,io_pEvent) ) 

#define IDMModelServices_GetContentMap(This,in_Context,out_ppContentMap)	\
    ( (This)->lpVtbl -> GetContentMap(This,in_Context,out_ppContentMap) ) 

#define IDMModelServices_RenderPMMLModelStatistics(This,in_pContext,in_pXMLWriter)	\
    ( (This)->lpVtbl -> RenderPMMLModelStatistics(This,in_pContext,in_pXMLWriter) ) 

#define IDMModelServices_RenderPMMLMiningSchema(This,in_pContext,in_pXMLWriter)	\
    ( (This)->lpVtbl -> RenderPMMLMiningSchema(This,in_pContext,in_pXMLWriter) ) 

#define IDMModelServices_RenderPMMLModelCreationFlags(This,in_pContext,in_pXMLWriter)	\
    ( (This)->lpVtbl -> RenderPMMLModelCreationFlags(This,in_pContext,in_pXMLWriter) ) 

#define IDMModelServices_ParsePMMLModelStatistics(This,in_pContext)	\
    ( (This)->lpVtbl -> ParsePMMLModelStatistics(This,in_pContext) ) 

#define IDMModelServices_ContinuePMMLParsing(This,in_pContext)	\
    ( (This)->lpVtbl -> ContinuePMMLParsing(This,in_pContext) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMModelServices_GetModelName_Proxy( 
    IDMModelServices * This,
    /* [out] */ const WCHAR **out_ppchModelName);


void __RPC_STUB IDMModelServices_GetModelName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMModelServices_GetModelLocaleID_Proxy( 
    IDMModelServices * This,
    /* [out] */ LCID *out_pLocaleID);


void __RPC_STUB IDMModelServices_GetModelLocaleID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMModelServices_FireProgressNotification_Proxy( 
    IDMModelServices * This,
    /* [in] */ IDMContextServices *in_Context,
    /* [out][in] */ DM_PROGRESS_NOTIFICATION_EVENT *io_pEvent);


void __RPC_STUB IDMModelServices_FireProgressNotification_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMModelServices_GetContentMap_Proxy( 
    IDMModelServices * This,
    /* [in] */ IDMContextServices *in_Context,
    /* [out] */ IDMContentMap **out_ppContentMap);


void __RPC_STUB IDMModelServices_GetContentMap_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMModelServices_RenderPMMLModelStatistics_Proxy( 
    IDMModelServices * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ISAXContentHandler *in_pXMLWriter);


void __RPC_STUB IDMModelServices_RenderPMMLModelStatistics_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMModelServices_RenderPMMLMiningSchema_Proxy( 
    IDMModelServices * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ISAXContentHandler *in_pXMLWriter);


void __RPC_STUB IDMModelServices_RenderPMMLMiningSchema_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMModelServices_RenderPMMLModelCreationFlags_Proxy( 
    IDMModelServices * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ISAXContentHandler *in_pXMLWriter);


void __RPC_STUB IDMModelServices_RenderPMMLModelCreationFlags_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMModelServices_ParsePMMLModelStatistics_Proxy( 
    IDMModelServices * This,
    /* [in] */ IDMContextServices *in_pContext);


void __RPC_STUB IDMModelServices_ParsePMMLModelStatistics_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMModelServices_ContinuePMMLParsing_Proxy( 
    IDMModelServices * This,
    /* [in] */ IDMContextServices *in_pContext);


void __RPC_STUB IDMModelServices_ContinuePMMLParsing_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMModelServices_INTERFACE_DEFINED__ */


#ifndef __IDMAttributeGroup_INTERFACE_DEFINED__
#define __IDMAttributeGroup_INTERFACE_DEFINED__

/* interface IDMAttributeGroup */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMAttributeGroup;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("8C3D4C0F-AD07-4ed6-A2FE-759C50B30149")
    IDMAttributeGroup : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Next( 
            DM_Attribute *out_pAttribute) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCount( 
            ULONG *out_pul) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMAttributeGroupVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMAttributeGroup * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMAttributeGroup * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMAttributeGroup * This);
        
        HRESULT ( STDMETHODCALLTYPE *Reset )( 
            IDMAttributeGroup * This);
        
        HRESULT ( STDMETHODCALLTYPE *Next )( 
            IDMAttributeGroup * This,
            DM_Attribute *out_pAttribute);
        
        HRESULT ( STDMETHODCALLTYPE *GetCount )( 
            IDMAttributeGroup * This,
            ULONG *out_pul);
        
        END_INTERFACE
    } IDMAttributeGroupVtbl;

    interface IDMAttributeGroup
    {
        CONST_VTBL struct IDMAttributeGroupVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMAttributeGroup_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMAttributeGroup_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMAttributeGroup_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMAttributeGroup_Reset(This)	\
    ( (This)->lpVtbl -> Reset(This) ) 

#define IDMAttributeGroup_Next(This,out_pAttribute)	\
    ( (This)->lpVtbl -> Next(This,out_pAttribute) ) 

#define IDMAttributeGroup_GetCount(This,out_pul)	\
    ( (This)->lpVtbl -> GetCount(This,out_pul) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMAttributeGroup_Reset_Proxy( 
    IDMAttributeGroup * This);


void __RPC_STUB IDMAttributeGroup_Reset_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeGroup_Next_Proxy( 
    IDMAttributeGroup * This,
    DM_Attribute *out_pAttribute);


void __RPC_STUB IDMAttributeGroup_Next_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeGroup_GetCount_Proxy( 
    IDMAttributeGroup * This,
    ULONG *out_pul);


void __RPC_STUB IDMAttributeGroup_GetCount_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMAttributeGroup_INTERFACE_DEFINED__ */


#ifndef __IDMAttributeSet_INTERFACE_DEFINED__
#define __IDMAttributeSet_INTERFACE_DEFINED__

/* interface IDMAttributeSet */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMAttributeSet;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("71D47D7C-2821-11D3-8C76-00600832DCED")
    IDMAttributeSet : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetAttributeFlags( 
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ DM_ATTRIBUTE_FLAGS *out_pFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetModelingFlags( 
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ DM_MODELING_FLAG **out_prgFlags,
            ULONG *out_pcFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttributeType( 
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ DBTYPE *out_pTYpe) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttributeCount( 
            /* [out] */ ULONG *out_pulAttributes) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttributeStateCount( 
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ ULONG *out_pulStates) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttributeDisplayName( 
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ BOOL in_fShortName,
            /* [out] */ DMString *out_pstrName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttributeDisplayNameXML( 
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ DMXMLWriterPtr io_pXMLWriter) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetFullyQualifiedColumnName( 
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ DMString *out_pbstrName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttributeValue( 
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ DMVariantPtr io_pvarValue) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttributeStateValue( 
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ DMVariantPtr in_pvarVal,
            /* [out] */ DM_STATE_VALUE *out_pStateValue) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetInterpretedAttributeValue( 
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ DMVariantPtr io_pvarValue) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDiscretizedStateRange( 
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ DM_State in_State,
            /* [in] */ BOOL in_fActual,
            /* [out] */ double *out_pdblLower,
            /* [out] */ double *out_pdblUpper) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsFunctionallyDependant( 
            /* [in] */ DM_Attribute in_Attribute1,
            /* [in] */ DM_Attribute in_Attribute2) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE IsCaseAttribute( 
            /* [in] */ DM_Attribute in_Attribute) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCaseIDName( 
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_CaseID in_CaseID,
            /* [out] */ DMString *out_pstrName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetClassifiedAttribute( 
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ DM_Attribute *out_pClassifiedAttribute) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttributeGroup( 
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ IDMAttributeGroup **out_ppAttributeGroup) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMAttributeSetVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMAttributeSet * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMAttributeSet * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMAttributeSet * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeFlags )( 
            IDMAttributeSet * This,
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ DM_ATTRIBUTE_FLAGS *out_pFlags);
        
        HRESULT ( STDMETHODCALLTYPE *GetModelingFlags )( 
            IDMAttributeSet * This,
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ DM_MODELING_FLAG **out_prgFlags,
            ULONG *out_pcFlags);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeType )( 
            IDMAttributeSet * This,
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ DBTYPE *out_pTYpe);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeCount )( 
            IDMAttributeSet * This,
            /* [out] */ ULONG *out_pulAttributes);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeStateCount )( 
            IDMAttributeSet * This,
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ ULONG *out_pulStates);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeDisplayName )( 
            IDMAttributeSet * This,
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ BOOL in_fShortName,
            /* [out] */ DMString *out_pstrName);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeDisplayNameXML )( 
            IDMAttributeSet * This,
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ DMXMLWriterPtr io_pXMLWriter);
        
        HRESULT ( STDMETHODCALLTYPE *GetFullyQualifiedColumnName )( 
            IDMAttributeSet * This,
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ DMString *out_pbstrName);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeValue )( 
            IDMAttributeSet * This,
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ DMVariantPtr io_pvarValue);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeStateValue )( 
            IDMAttributeSet * This,
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ DMVariantPtr in_pvarVal,
            /* [out] */ DM_STATE_VALUE *out_pStateValue);
        
        HRESULT ( STDMETHODCALLTYPE *GetInterpretedAttributeValue )( 
            IDMAttributeSet * This,
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ DMVariantPtr io_pvarValue);
        
        HRESULT ( STDMETHODCALLTYPE *GetDiscretizedStateRange )( 
            IDMAttributeSet * This,
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ DM_State in_State,
            /* [in] */ BOOL in_fActual,
            /* [out] */ double *out_pdblLower,
            /* [out] */ double *out_pdblUpper);
        
        HRESULT ( STDMETHODCALLTYPE *IsFunctionallyDependant )( 
            IDMAttributeSet * This,
            /* [in] */ DM_Attribute in_Attribute1,
            /* [in] */ DM_Attribute in_Attribute2);
        
        HRESULT ( STDMETHODCALLTYPE *IsCaseAttribute )( 
            IDMAttributeSet * This,
            /* [in] */ DM_Attribute in_Attribute);
        
        HRESULT ( STDMETHODCALLTYPE *GetCaseIDName )( 
            IDMAttributeSet * This,
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_CaseID in_CaseID,
            /* [out] */ DMString *out_pstrName);
        
        HRESULT ( STDMETHODCALLTYPE *GetClassifiedAttribute )( 
            IDMAttributeSet * This,
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ DM_Attribute *out_pClassifiedAttribute);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeGroup )( 
            IDMAttributeSet * This,
            /* [in] */ IDMContextServices *in_Context,
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ IDMAttributeGroup **out_ppAttributeGroup);
        
        END_INTERFACE
    } IDMAttributeSetVtbl;

    interface IDMAttributeSet
    {
        CONST_VTBL struct IDMAttributeSetVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMAttributeSet_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMAttributeSet_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMAttributeSet_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMAttributeSet_GetAttributeFlags(This,in_Attribute,out_pFlags)	\
    ( (This)->lpVtbl -> GetAttributeFlags(This,in_Attribute,out_pFlags) ) 

#define IDMAttributeSet_GetModelingFlags(This,in_Attribute,out_prgFlags,out_pcFlags)	\
    ( (This)->lpVtbl -> GetModelingFlags(This,in_Attribute,out_prgFlags,out_pcFlags) ) 

#define IDMAttributeSet_GetAttributeType(This,in_Attribute,out_pTYpe)	\
    ( (This)->lpVtbl -> GetAttributeType(This,in_Attribute,out_pTYpe) ) 

#define IDMAttributeSet_GetAttributeCount(This,out_pulAttributes)	\
    ( (This)->lpVtbl -> GetAttributeCount(This,out_pulAttributes) ) 

#define IDMAttributeSet_GetAttributeStateCount(This,in_Attribute,out_pulStates)	\
    ( (This)->lpVtbl -> GetAttributeStateCount(This,in_Attribute,out_pulStates) ) 

#define IDMAttributeSet_GetAttributeDisplayName(This,in_Context,in_Attribute,in_fShortName,out_pstrName)	\
    ( (This)->lpVtbl -> GetAttributeDisplayName(This,in_Context,in_Attribute,in_fShortName,out_pstrName) ) 

#define IDMAttributeSet_GetAttributeDisplayNameXML(This,in_Context,in_Attribute,io_pXMLWriter)	\
    ( (This)->lpVtbl -> GetAttributeDisplayNameXML(This,in_Context,in_Attribute,io_pXMLWriter) ) 

#define IDMAttributeSet_GetFullyQualifiedColumnName(This,in_Context,in_Attribute,out_pbstrName)	\
    ( (This)->lpVtbl -> GetFullyQualifiedColumnName(This,in_Context,in_Attribute,out_pbstrName) ) 

#define IDMAttributeSet_GetAttributeValue(This,in_Context,in_Attribute,io_pvarValue)	\
    ( (This)->lpVtbl -> GetAttributeValue(This,in_Context,in_Attribute,io_pvarValue) ) 

#define IDMAttributeSet_GetAttributeStateValue(This,in_Context,in_Attribute,in_pvarVal,out_pStateValue)	\
    ( (This)->lpVtbl -> GetAttributeStateValue(This,in_Context,in_Attribute,in_pvarVal,out_pStateValue) ) 

#define IDMAttributeSet_GetInterpretedAttributeValue(This,in_Context,in_Attribute,io_pvarValue)	\
    ( (This)->lpVtbl -> GetInterpretedAttributeValue(This,in_Context,in_Attribute,io_pvarValue) ) 

#define IDMAttributeSet_GetDiscretizedStateRange(This,in_Context,in_Attribute,in_State,in_fActual,out_pdblLower,out_pdblUpper)	\
    ( (This)->lpVtbl -> GetDiscretizedStateRange(This,in_Context,in_Attribute,in_State,in_fActual,out_pdblLower,out_pdblUpper) ) 

#define IDMAttributeSet_IsFunctionallyDependant(This,in_Attribute1,in_Attribute2)	\
    ( (This)->lpVtbl -> IsFunctionallyDependant(This,in_Attribute1,in_Attribute2) ) 

#define IDMAttributeSet_IsCaseAttribute(This,in_Attribute)	\
    ( (This)->lpVtbl -> IsCaseAttribute(This,in_Attribute) ) 

#define IDMAttributeSet_GetCaseIDName(This,in_Context,in_CaseID,out_pstrName)	\
    ( (This)->lpVtbl -> GetCaseIDName(This,in_Context,in_CaseID,out_pstrName) ) 

#define IDMAttributeSet_GetClassifiedAttribute(This,in_Attribute,out_pClassifiedAttribute)	\
    ( (This)->lpVtbl -> GetClassifiedAttribute(This,in_Attribute,out_pClassifiedAttribute) ) 

#define IDMAttributeSet_GetAttributeGroup(This,in_Context,in_Attribute,out_ppAttributeGroup)	\
    ( (This)->lpVtbl -> GetAttributeGroup(This,in_Context,in_Attribute,out_ppAttributeGroup) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetAttributeFlags_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ DM_Attribute in_Attribute,
    /* [out] */ DM_ATTRIBUTE_FLAGS *out_pFlags);


void __RPC_STUB IDMAttributeSet_GetAttributeFlags_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetModelingFlags_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ DM_Attribute in_Attribute,
    /* [out] */ DM_MODELING_FLAG **out_prgFlags,
    ULONG *out_pcFlags);


void __RPC_STUB IDMAttributeSet_GetModelingFlags_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetAttributeType_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ DM_Attribute in_Attribute,
    /* [out] */ DBTYPE *out_pTYpe);


void __RPC_STUB IDMAttributeSet_GetAttributeType_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetAttributeCount_Proxy( 
    IDMAttributeSet * This,
    /* [out] */ ULONG *out_pulAttributes);


void __RPC_STUB IDMAttributeSet_GetAttributeCount_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetAttributeStateCount_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ DM_Attribute in_Attribute,
    /* [out] */ ULONG *out_pulStates);


void __RPC_STUB IDMAttributeSet_GetAttributeStateCount_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetAttributeDisplayName_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ IDMContextServices *in_Context,
    /* [in] */ DM_Attribute in_Attribute,
    /* [in] */ BOOL in_fShortName,
    /* [out] */ DMString *out_pstrName);


void __RPC_STUB IDMAttributeSet_GetAttributeDisplayName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetAttributeDisplayNameXML_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ IDMContextServices *in_Context,
    /* [in] */ DM_Attribute in_Attribute,
    /* [in] */ DMXMLWriterPtr io_pXMLWriter);


void __RPC_STUB IDMAttributeSet_GetAttributeDisplayNameXML_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetFullyQualifiedColumnName_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ IDMContextServices *in_Context,
    /* [in] */ DM_Attribute in_Attribute,
    /* [out] */ DMString *out_pbstrName);


void __RPC_STUB IDMAttributeSet_GetFullyQualifiedColumnName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetAttributeValue_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ IDMContextServices *in_Context,
    /* [in] */ DM_Attribute in_Attribute,
    /* [in] */ DMVariantPtr io_pvarValue);


void __RPC_STUB IDMAttributeSet_GetAttributeValue_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetAttributeStateValue_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ IDMContextServices *in_Context,
    /* [in] */ DM_Attribute in_Attribute,
    /* [in] */ DMVariantPtr in_pvarVal,
    /* [out] */ DM_STATE_VALUE *out_pStateValue);


void __RPC_STUB IDMAttributeSet_GetAttributeStateValue_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetInterpretedAttributeValue_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ IDMContextServices *in_Context,
    /* [in] */ DM_Attribute in_Attribute,
    /* [in] */ DMVariantPtr io_pvarValue);


void __RPC_STUB IDMAttributeSet_GetInterpretedAttributeValue_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetDiscretizedStateRange_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ IDMContextServices *in_Context,
    /* [in] */ DM_Attribute in_Attribute,
    /* [in] */ DM_State in_State,
    /* [in] */ BOOL in_fActual,
    /* [out] */ double *out_pdblLower,
    /* [out] */ double *out_pdblUpper);


void __RPC_STUB IDMAttributeSet_GetDiscretizedStateRange_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_IsFunctionallyDependant_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ DM_Attribute in_Attribute1,
    /* [in] */ DM_Attribute in_Attribute2);


void __RPC_STUB IDMAttributeSet_IsFunctionallyDependant_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_IsCaseAttribute_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ DM_Attribute in_Attribute);


void __RPC_STUB IDMAttributeSet_IsCaseAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetCaseIDName_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ IDMContextServices *in_Context,
    /* [in] */ DM_CaseID in_CaseID,
    /* [out] */ DMString *out_pstrName);


void __RPC_STUB IDMAttributeSet_GetCaseIDName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetClassifiedAttribute_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ DM_Attribute in_Attribute,
    /* [out] */ DM_Attribute *out_pClassifiedAttribute);


void __RPC_STUB IDMAttributeSet_GetClassifiedAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAttributeSet_GetAttributeGroup_Proxy( 
    IDMAttributeSet * This,
    /* [in] */ IDMContextServices *in_Context,
    /* [in] */ DM_Attribute in_Attribute,
    /* [out] */ IDMAttributeGroup **out_ppAttributeGroup);


void __RPC_STUB IDMAttributeSet_GetAttributeGroup_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMAttributeSet_INTERFACE_DEFINED__ */


#ifndef __IDMCaseOrdinalIterator_INTERFACE_DEFINED__
#define __IDMCaseOrdinalIterator_INTERFACE_DEFINED__

/* interface IDMCaseOrdinalIterator */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMCaseOrdinalIterator;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("06A26F27-FB02-4267-B824-A94AEC585CE8")
    IDMCaseOrdinalIterator : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Start( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Next( 
            ULONG *out_pCaseOrdinal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMCaseOrdinalIteratorVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMCaseOrdinalIterator * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMCaseOrdinalIterator * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMCaseOrdinalIterator * This);
        
        HRESULT ( STDMETHODCALLTYPE *Start )( 
            IDMCaseOrdinalIterator * This);
        
        HRESULT ( STDMETHODCALLTYPE *Next )( 
            IDMCaseOrdinalIterator * This,
            ULONG *out_pCaseOrdinal);
        
        END_INTERFACE
    } IDMCaseOrdinalIteratorVtbl;

    interface IDMCaseOrdinalIterator
    {
        CONST_VTBL struct IDMCaseOrdinalIteratorVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMCaseOrdinalIterator_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMCaseOrdinalIterator_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMCaseOrdinalIterator_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMCaseOrdinalIterator_Start(This)	\
    ( (This)->lpVtbl -> Start(This) ) 

#define IDMCaseOrdinalIterator_Next(This,out_pCaseOrdinal)	\
    ( (This)->lpVtbl -> Next(This,out_pCaseOrdinal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMCaseOrdinalIterator_Start_Proxy( 
    IDMCaseOrdinalIterator * This);


void __RPC_STUB IDMCaseOrdinalIterator_Start_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMCaseOrdinalIterator_Next_Proxy( 
    IDMCaseOrdinalIterator * This,
    ULONG *out_pCaseOrdinal);


void __RPC_STUB IDMCaseOrdinalIterator_Next_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMCaseOrdinalIterator_INTERFACE_DEFINED__ */


#ifndef __IDMCaseProcessor_INTERFACE_DEFINED__
#define __IDMCaseProcessor_INTERFACE_DEFINED__

/* interface IDMCaseProcessor */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMCaseProcessor;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("FA8606DA-7462-4a33-8A3D-5CFB774DEE7B")
    IDMCaseProcessor : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE RequestCapacity( 
            ULONG in_cCapacity) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ProcessCase( 
            DM_CaseID in_CaseID,
            ULONG in_cAttributes,
            ULONG *in_rgValues) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMCaseProcessorVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMCaseProcessor * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMCaseProcessor * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMCaseProcessor * This);
        
        HRESULT ( STDMETHODCALLTYPE *RequestCapacity )( 
            IDMCaseProcessor * This,
            ULONG in_cCapacity);
        
        HRESULT ( STDMETHODCALLTYPE *ProcessCase )( 
            IDMCaseProcessor * This,
            DM_CaseID in_CaseID,
            ULONG in_cAttributes,
            ULONG *in_rgValues);
        
        END_INTERFACE
    } IDMCaseProcessorVtbl;

    interface IDMCaseProcessor
    {
        CONST_VTBL struct IDMCaseProcessorVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMCaseProcessor_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMCaseProcessor_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMCaseProcessor_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMCaseProcessor_RequestCapacity(This,in_cCapacity)	\
    ( (This)->lpVtbl -> RequestCapacity(This,in_cCapacity) ) 

#define IDMCaseProcessor_ProcessCase(This,in_CaseID,in_cAttributes,in_rgValues)	\
    ( (This)->lpVtbl -> ProcessCase(This,in_CaseID,in_cAttributes,in_rgValues) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMCaseProcessor_RequestCapacity_Proxy( 
    IDMCaseProcessor * This,
    ULONG in_cCapacity);


void __RPC_STUB IDMCaseProcessor_RequestCapacity_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMCaseProcessor_ProcessCase_Proxy( 
    IDMCaseProcessor * This,
    DM_CaseID in_CaseID,
    ULONG in_cAttributes,
    ULONG *in_rgValues);


void __RPC_STUB IDMCaseProcessor_ProcessCase_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMCaseProcessor_INTERFACE_DEFINED__ */


#ifndef __IDMPushCaseSet_INTERFACE_DEFINED__
#define __IDMPushCaseSet_INTERFACE_DEFINED__

/* interface IDMPushCaseSet */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMPushCaseSet;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("71D47D7D-2821-11D3-8C76-00600832DCED")
    IDMPushCaseSet : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE IsDense( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetCaseLocation( 
            /* [in] */ ULONG in_cCapacity,
            /* [in] */ ULONG *in_pLocation) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetCaseOrdinalIterator( 
            /* [in] */ IDMCaseOrdinalIterator *in_pItr) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE StartCases( 
            /* [in] */ IDMCaseProcessor *in_pProcessor,
            /* [in] */ BOOL in_fNeedCaseID) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMPushCaseSetVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMPushCaseSet * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMPushCaseSet * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMPushCaseSet * This);
        
        HRESULT ( STDMETHODCALLTYPE *IsDense )( 
            IDMPushCaseSet * This);
        
        HRESULT ( STDMETHODCALLTYPE *SetCaseLocation )( 
            IDMPushCaseSet * This,
            /* [in] */ ULONG in_cCapacity,
            /* [in] */ ULONG *in_pLocation);
        
        HRESULT ( STDMETHODCALLTYPE *SetCaseOrdinalIterator )( 
            IDMPushCaseSet * This,
            /* [in] */ IDMCaseOrdinalIterator *in_pItr);
        
        HRESULT ( STDMETHODCALLTYPE *StartCases )( 
            IDMPushCaseSet * This,
            /* [in] */ IDMCaseProcessor *in_pProcessor,
            /* [in] */ BOOL in_fNeedCaseID);
        
        END_INTERFACE
    } IDMPushCaseSetVtbl;

    interface IDMPushCaseSet
    {
        CONST_VTBL struct IDMPushCaseSetVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMPushCaseSet_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMPushCaseSet_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMPushCaseSet_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMPushCaseSet_IsDense(This)	\
    ( (This)->lpVtbl -> IsDense(This) ) 

#define IDMPushCaseSet_SetCaseLocation(This,in_cCapacity,in_pLocation)	\
    ( (This)->lpVtbl -> SetCaseLocation(This,in_cCapacity,in_pLocation) ) 

#define IDMPushCaseSet_SetCaseOrdinalIterator(This,in_pItr)	\
    ( (This)->lpVtbl -> SetCaseOrdinalIterator(This,in_pItr) ) 

#define IDMPushCaseSet_StartCases(This,in_pProcessor,in_fNeedCaseID)	\
    ( (This)->lpVtbl -> StartCases(This,in_pProcessor,in_fNeedCaseID) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMPushCaseSet_IsDense_Proxy( 
    IDMPushCaseSet * This);


void __RPC_STUB IDMPushCaseSet_IsDense_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPushCaseSet_SetCaseLocation_Proxy( 
    IDMPushCaseSet * This,
    /* [in] */ ULONG in_cCapacity,
    /* [in] */ ULONG *in_pLocation);


void __RPC_STUB IDMPushCaseSet_SetCaseLocation_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPushCaseSet_SetCaseOrdinalIterator_Proxy( 
    IDMPushCaseSet * This,
    /* [in] */ IDMCaseOrdinalIterator *in_pItr);


void __RPC_STUB IDMPushCaseSet_SetCaseOrdinalIterator_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPushCaseSet_StartCases_Proxy( 
    IDMPushCaseSet * This,
    /* [in] */ IDMCaseProcessor *in_pProcessor,
    /* [in] */ BOOL in_fNeedCaseID);


void __RPC_STUB IDMPushCaseSet_StartCases_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMPushCaseSet_INTERFACE_DEFINED__ */


#ifndef __IDMDAGNavigation_INTERFACE_DEFINED__
#define __IDMDAGNavigation_INTERFACE_DEFINED__

/* interface IDMDAGNavigation */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMDAGNavigation;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("97861AA0-2E48-11d3-8C76-00600832DCED")
    IDMDAGNavigation : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE MoveToNextTree( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNodeID( 
            /* [out] */ DM_DAGNodeID *out_pNodeID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE LocateNode( 
            /* [in] */ DM_DAGNodeID in_NodeID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ValidateNodeID( 
            /* [in] */ DM_DAGNodeID in_NodeID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParentCount( 
            /* [out] */ ULONG *out_pulParents) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE MoveToParent( 
            /* [in] */ ULONG in_ParentIndex) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParentNodeID( 
            /* [in] */ ULONG in_ParentIndex,
            /* [out] */ DM_DAGNodeID *out_pNodeID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetChildCount( 
            /* [out] */ ULONG *out_pulChilds) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE MoveToChild( 
            /* [in] */ ULONG in_ChildIndex) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetChildNodeID( 
            /* [in] */ ULONG in_ChildIndex,
            /* [out] */ DM_DAGNodeID *out_pNodeID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE MoveToNextLeaf( 
            /* [in] */ DM_DAGNodeID in_ScopeNodeID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE AddRefNodeID( 
            /* [in] */ DM_DAGNodeID in_NodeID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ReleaseNodeID( 
            /* [in] */ DM_DAGNodeID in_NodeID) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMDAGNavigationVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMDAGNavigation * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMDAGNavigation * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMDAGNavigation * This);
        
        HRESULT ( STDMETHODCALLTYPE *MoveToNextTree )( 
            IDMDAGNavigation * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetNodeID )( 
            IDMDAGNavigation * This,
            /* [out] */ DM_DAGNodeID *out_pNodeID);
        
        HRESULT ( STDMETHODCALLTYPE *LocateNode )( 
            IDMDAGNavigation * This,
            /* [in] */ DM_DAGNodeID in_NodeID);
        
        HRESULT ( STDMETHODCALLTYPE *ValidateNodeID )( 
            IDMDAGNavigation * This,
            /* [in] */ DM_DAGNodeID in_NodeID);
        
        HRESULT ( STDMETHODCALLTYPE *GetParentCount )( 
            IDMDAGNavigation * This,
            /* [out] */ ULONG *out_pulParents);
        
        HRESULT ( STDMETHODCALLTYPE *MoveToParent )( 
            IDMDAGNavigation * This,
            /* [in] */ ULONG in_ParentIndex);
        
        HRESULT ( STDMETHODCALLTYPE *GetParentNodeID )( 
            IDMDAGNavigation * This,
            /* [in] */ ULONG in_ParentIndex,
            /* [out] */ DM_DAGNodeID *out_pNodeID);
        
        HRESULT ( STDMETHODCALLTYPE *GetChildCount )( 
            IDMDAGNavigation * This,
            /* [out] */ ULONG *out_pulChilds);
        
        HRESULT ( STDMETHODCALLTYPE *MoveToChild )( 
            IDMDAGNavigation * This,
            /* [in] */ ULONG in_ChildIndex);
        
        HRESULT ( STDMETHODCALLTYPE *GetChildNodeID )( 
            IDMDAGNavigation * This,
            /* [in] */ ULONG in_ChildIndex,
            /* [out] */ DM_DAGNodeID *out_pNodeID);
        
        HRESULT ( STDMETHODCALLTYPE *MoveToNextLeaf )( 
            IDMDAGNavigation * This,
            /* [in] */ DM_DAGNodeID in_ScopeNodeID);
        
        HRESULT ( STDMETHODCALLTYPE *AddRefNodeID )( 
            IDMDAGNavigation * This,
            /* [in] */ DM_DAGNodeID in_NodeID);
        
        HRESULT ( STDMETHODCALLTYPE *ReleaseNodeID )( 
            IDMDAGNavigation * This,
            /* [in] */ DM_DAGNodeID in_NodeID);
        
        END_INTERFACE
    } IDMDAGNavigationVtbl;

    interface IDMDAGNavigation
    {
        CONST_VTBL struct IDMDAGNavigationVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMDAGNavigation_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMDAGNavigation_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMDAGNavigation_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMDAGNavigation_MoveToNextTree(This)	\
    ( (This)->lpVtbl -> MoveToNextTree(This) ) 

#define IDMDAGNavigation_GetNodeID(This,out_pNodeID)	\
    ( (This)->lpVtbl -> GetNodeID(This,out_pNodeID) ) 

#define IDMDAGNavigation_LocateNode(This,in_NodeID)	\
    ( (This)->lpVtbl -> LocateNode(This,in_NodeID) ) 

#define IDMDAGNavigation_ValidateNodeID(This,in_NodeID)	\
    ( (This)->lpVtbl -> ValidateNodeID(This,in_NodeID) ) 

#define IDMDAGNavigation_GetParentCount(This,out_pulParents)	\
    ( (This)->lpVtbl -> GetParentCount(This,out_pulParents) ) 

#define IDMDAGNavigation_MoveToParent(This,in_ParentIndex)	\
    ( (This)->lpVtbl -> MoveToParent(This,in_ParentIndex) ) 

#define IDMDAGNavigation_GetParentNodeID(This,in_ParentIndex,out_pNodeID)	\
    ( (This)->lpVtbl -> GetParentNodeID(This,in_ParentIndex,out_pNodeID) ) 

#define IDMDAGNavigation_GetChildCount(This,out_pulChilds)	\
    ( (This)->lpVtbl -> GetChildCount(This,out_pulChilds) ) 

#define IDMDAGNavigation_MoveToChild(This,in_ChildIndex)	\
    ( (This)->lpVtbl -> MoveToChild(This,in_ChildIndex) ) 

#define IDMDAGNavigation_GetChildNodeID(This,in_ChildIndex,out_pNodeID)	\
    ( (This)->lpVtbl -> GetChildNodeID(This,in_ChildIndex,out_pNodeID) ) 

#define IDMDAGNavigation_MoveToNextLeaf(This,in_ScopeNodeID)	\
    ( (This)->lpVtbl -> MoveToNextLeaf(This,in_ScopeNodeID) ) 

#define IDMDAGNavigation_AddRefNodeID(This,in_NodeID)	\
    ( (This)->lpVtbl -> AddRefNodeID(This,in_NodeID) ) 

#define IDMDAGNavigation_ReleaseNodeID(This,in_NodeID)	\
    ( (This)->lpVtbl -> ReleaseNodeID(This,in_NodeID) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMDAGNavigation_MoveToNextTree_Proxy( 
    IDMDAGNavigation * This);


void __RPC_STUB IDMDAGNavigation_MoveToNextTree_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMDAGNavigation_GetNodeID_Proxy( 
    IDMDAGNavigation * This,
    /* [out] */ DM_DAGNodeID *out_pNodeID);


void __RPC_STUB IDMDAGNavigation_GetNodeID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMDAGNavigation_LocateNode_Proxy( 
    IDMDAGNavigation * This,
    /* [in] */ DM_DAGNodeID in_NodeID);


void __RPC_STUB IDMDAGNavigation_LocateNode_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMDAGNavigation_ValidateNodeID_Proxy( 
    IDMDAGNavigation * This,
    /* [in] */ DM_DAGNodeID in_NodeID);


void __RPC_STUB IDMDAGNavigation_ValidateNodeID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMDAGNavigation_GetParentCount_Proxy( 
    IDMDAGNavigation * This,
    /* [out] */ ULONG *out_pulParents);


void __RPC_STUB IDMDAGNavigation_GetParentCount_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMDAGNavigation_MoveToParent_Proxy( 
    IDMDAGNavigation * This,
    /* [in] */ ULONG in_ParentIndex);


void __RPC_STUB IDMDAGNavigation_MoveToParent_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMDAGNavigation_GetParentNodeID_Proxy( 
    IDMDAGNavigation * This,
    /* [in] */ ULONG in_ParentIndex,
    /* [out] */ DM_DAGNodeID *out_pNodeID);


void __RPC_STUB IDMDAGNavigation_GetParentNodeID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMDAGNavigation_GetChildCount_Proxy( 
    IDMDAGNavigation * This,
    /* [out] */ ULONG *out_pulChilds);


void __RPC_STUB IDMDAGNavigation_GetChildCount_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMDAGNavigation_MoveToChild_Proxy( 
    IDMDAGNavigation * This,
    /* [in] */ ULONG in_ChildIndex);


void __RPC_STUB IDMDAGNavigation_MoveToChild_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMDAGNavigation_GetChildNodeID_Proxy( 
    IDMDAGNavigation * This,
    /* [in] */ ULONG in_ChildIndex,
    /* [out] */ DM_DAGNodeID *out_pNodeID);


void __RPC_STUB IDMDAGNavigation_GetChildNodeID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMDAGNavigation_MoveToNextLeaf_Proxy( 
    IDMDAGNavigation * This,
    /* [in] */ DM_DAGNodeID in_ScopeNodeID);


void __RPC_STUB IDMDAGNavigation_MoveToNextLeaf_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMDAGNavigation_AddRefNodeID_Proxy( 
    IDMDAGNavigation * This,
    /* [in] */ DM_DAGNodeID in_NodeID);


void __RPC_STUB IDMDAGNavigation_AddRefNodeID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMDAGNavigation_ReleaseNodeID_Proxy( 
    IDMDAGNavigation * This,
    /* [in] */ DM_DAGNodeID in_NodeID);


void __RPC_STUB IDMDAGNavigation_ReleaseNodeID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMDAGNavigation_INTERFACE_DEFINED__ */


#ifndef __IDMAlgorithmNavigation_INTERFACE_DEFINED__
#define __IDMAlgorithmNavigation_INTERFACE_DEFINED__

/* interface IDMAlgorithmNavigation */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMAlgorithmNavigation;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("F1481077-58C8-40d3-9F53-D72878D63686")
    IDMAlgorithmNavigation : public IDMDAGNavigation
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetNodeProperty( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_NODE_PROP in_PropID,
            /* [in] */ DMVariantPtr io_pValue) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNodeArrayProperty( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_NODE_PROP in_PropID,
            /* [out] */ ULONG *out_pulArraySize,
            /* [out] */ void **out_prgArrayBuffer) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNodeUniqueName( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DMString *io_pstrUniqueName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNodeIDFromUniqueName( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DMString *in_pstrUniqueName,
            /* [out] */ DM_DAGNodeID *out_pNodeID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetUniqueNameFromNodeID( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_DAGNodeID in_NodeID,
            /* [out] */ DMString *out_pstrUniqueName) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMAlgorithmNavigationVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMAlgorithmNavigation * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMAlgorithmNavigation * This);
        
        HRESULT ( STDMETHODCALLTYPE *MoveToNextTree )( 
            IDMAlgorithmNavigation * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetNodeID )( 
            IDMAlgorithmNavigation * This,
            /* [out] */ DM_DAGNodeID *out_pNodeID);
        
        HRESULT ( STDMETHODCALLTYPE *LocateNode )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ DM_DAGNodeID in_NodeID);
        
        HRESULT ( STDMETHODCALLTYPE *ValidateNodeID )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ DM_DAGNodeID in_NodeID);
        
        HRESULT ( STDMETHODCALLTYPE *GetParentCount )( 
            IDMAlgorithmNavigation * This,
            /* [out] */ ULONG *out_pulParents);
        
        HRESULT ( STDMETHODCALLTYPE *MoveToParent )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ ULONG in_ParentIndex);
        
        HRESULT ( STDMETHODCALLTYPE *GetParentNodeID )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ ULONG in_ParentIndex,
            /* [out] */ DM_DAGNodeID *out_pNodeID);
        
        HRESULT ( STDMETHODCALLTYPE *GetChildCount )( 
            IDMAlgorithmNavigation * This,
            /* [out] */ ULONG *out_pulChilds);
        
        HRESULT ( STDMETHODCALLTYPE *MoveToChild )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ ULONG in_ChildIndex);
        
        HRESULT ( STDMETHODCALLTYPE *GetChildNodeID )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ ULONG in_ChildIndex,
            /* [out] */ DM_DAGNodeID *out_pNodeID);
        
        HRESULT ( STDMETHODCALLTYPE *MoveToNextLeaf )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ DM_DAGNodeID in_ScopeNodeID);
        
        HRESULT ( STDMETHODCALLTYPE *AddRefNodeID )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ DM_DAGNodeID in_NodeID);
        
        HRESULT ( STDMETHODCALLTYPE *ReleaseNodeID )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ DM_DAGNodeID in_NodeID);
        
        HRESULT ( STDMETHODCALLTYPE *GetNodeProperty )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_NODE_PROP in_PropID,
            /* [in] */ DMVariantPtr io_pValue);
        
        HRESULT ( STDMETHODCALLTYPE *GetNodeArrayProperty )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_NODE_PROP in_PropID,
            /* [out] */ ULONG *out_pulArraySize,
            /* [out] */ void **out_prgArrayBuffer);
        
        HRESULT ( STDMETHODCALLTYPE *GetNodeUniqueName )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DMString *io_pstrUniqueName);
        
        HRESULT ( STDMETHODCALLTYPE *GetNodeIDFromUniqueName )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DMString *in_pstrUniqueName,
            /* [out] */ DM_DAGNodeID *out_pNodeID);
        
        HRESULT ( STDMETHODCALLTYPE *GetUniqueNameFromNodeID )( 
            IDMAlgorithmNavigation * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_DAGNodeID in_NodeID,
            /* [out] */ DMString *out_pstrUniqueName);
        
        END_INTERFACE
    } IDMAlgorithmNavigationVtbl;

    interface IDMAlgorithmNavigation
    {
        CONST_VTBL struct IDMAlgorithmNavigationVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMAlgorithmNavigation_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMAlgorithmNavigation_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMAlgorithmNavigation_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMAlgorithmNavigation_MoveToNextTree(This)	\
    ( (This)->lpVtbl -> MoveToNextTree(This) ) 

#define IDMAlgorithmNavigation_GetNodeID(This,out_pNodeID)	\
    ( (This)->lpVtbl -> GetNodeID(This,out_pNodeID) ) 

#define IDMAlgorithmNavigation_LocateNode(This,in_NodeID)	\
    ( (This)->lpVtbl -> LocateNode(This,in_NodeID) ) 

#define IDMAlgorithmNavigation_ValidateNodeID(This,in_NodeID)	\
    ( (This)->lpVtbl -> ValidateNodeID(This,in_NodeID) ) 

#define IDMAlgorithmNavigation_GetParentCount(This,out_pulParents)	\
    ( (This)->lpVtbl -> GetParentCount(This,out_pulParents) ) 

#define IDMAlgorithmNavigation_MoveToParent(This,in_ParentIndex)	\
    ( (This)->lpVtbl -> MoveToParent(This,in_ParentIndex) ) 

#define IDMAlgorithmNavigation_GetParentNodeID(This,in_ParentIndex,out_pNodeID)	\
    ( (This)->lpVtbl -> GetParentNodeID(This,in_ParentIndex,out_pNodeID) ) 

#define IDMAlgorithmNavigation_GetChildCount(This,out_pulChilds)	\
    ( (This)->lpVtbl -> GetChildCount(This,out_pulChilds) ) 

#define IDMAlgorithmNavigation_MoveToChild(This,in_ChildIndex)	\
    ( (This)->lpVtbl -> MoveToChild(This,in_ChildIndex) ) 

#define IDMAlgorithmNavigation_GetChildNodeID(This,in_ChildIndex,out_pNodeID)	\
    ( (This)->lpVtbl -> GetChildNodeID(This,in_ChildIndex,out_pNodeID) ) 

#define IDMAlgorithmNavigation_MoveToNextLeaf(This,in_ScopeNodeID)	\
    ( (This)->lpVtbl -> MoveToNextLeaf(This,in_ScopeNodeID) ) 

#define IDMAlgorithmNavigation_AddRefNodeID(This,in_NodeID)	\
    ( (This)->lpVtbl -> AddRefNodeID(This,in_NodeID) ) 

#define IDMAlgorithmNavigation_ReleaseNodeID(This,in_NodeID)	\
    ( (This)->lpVtbl -> ReleaseNodeID(This,in_NodeID) ) 


#define IDMAlgorithmNavigation_GetNodeProperty(This,in_pContext,in_PropID,io_pValue)	\
    ( (This)->lpVtbl -> GetNodeProperty(This,in_pContext,in_PropID,io_pValue) ) 

#define IDMAlgorithmNavigation_GetNodeArrayProperty(This,in_pContext,in_PropID,out_pulArraySize,out_prgArrayBuffer)	\
    ( (This)->lpVtbl -> GetNodeArrayProperty(This,in_pContext,in_PropID,out_pulArraySize,out_prgArrayBuffer) ) 

#define IDMAlgorithmNavigation_GetNodeUniqueName(This,in_pContext,io_pstrUniqueName)	\
    ( (This)->lpVtbl -> GetNodeUniqueName(This,in_pContext,io_pstrUniqueName) ) 

#define IDMAlgorithmNavigation_GetNodeIDFromUniqueName(This,in_pContext,in_pstrUniqueName,out_pNodeID)	\
    ( (This)->lpVtbl -> GetNodeIDFromUniqueName(This,in_pContext,in_pstrUniqueName,out_pNodeID) ) 

#define IDMAlgorithmNavigation_GetUniqueNameFromNodeID(This,in_pContext,in_NodeID,out_pstrUniqueName)	\
    ( (This)->lpVtbl -> GetUniqueNameFromNodeID(This,in_pContext,in_NodeID,out_pstrUniqueName) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMAlgorithmNavigation_GetNodeProperty_Proxy( 
    IDMAlgorithmNavigation * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_NODE_PROP in_PropID,
    /* [in] */ DMVariantPtr io_pValue);


void __RPC_STUB IDMAlgorithmNavigation_GetNodeProperty_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmNavigation_GetNodeArrayProperty_Proxy( 
    IDMAlgorithmNavigation * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_NODE_PROP in_PropID,
    /* [out] */ ULONG *out_pulArraySize,
    /* [out] */ void **out_prgArrayBuffer);


void __RPC_STUB IDMAlgorithmNavigation_GetNodeArrayProperty_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmNavigation_GetNodeUniqueName_Proxy( 
    IDMAlgorithmNavigation * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ DMString *io_pstrUniqueName);


void __RPC_STUB IDMAlgorithmNavigation_GetNodeUniqueName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmNavigation_GetNodeIDFromUniqueName_Proxy( 
    IDMAlgorithmNavigation * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DMString *in_pstrUniqueName,
    /* [out] */ DM_DAGNodeID *out_pNodeID);


void __RPC_STUB IDMAlgorithmNavigation_GetNodeIDFromUniqueName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmNavigation_GetUniqueNameFromNodeID_Proxy( 
    IDMAlgorithmNavigation * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_DAGNodeID in_NodeID,
    /* [out] */ DMString *out_pstrUniqueName);


void __RPC_STUB IDMAlgorithmNavigation_GetUniqueNameFromNodeID_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMAlgorithmNavigation_INTERFACE_DEFINED__ */


#ifndef __IDMPullCaseSet_INTERFACE_DEFINED__
#define __IDMPullCaseSet_INTERFACE_DEFINED__

/* interface IDMPullCaseSet */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMPullCaseSet;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("5BE933A7-51F4-4b9d-9559-193BD80AB28B")
    IDMPullCaseSet : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE IsDense( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RestartCases( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNextCase( 
            DM_CaseID *out_pCaseID,
            ULONG *out_pcCapacity,
            ULONG **out_ppLocation) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMPullCaseSetVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMPullCaseSet * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMPullCaseSet * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMPullCaseSet * This);
        
        HRESULT ( STDMETHODCALLTYPE *IsDense )( 
            IDMPullCaseSet * This);
        
        HRESULT ( STDMETHODCALLTYPE *RestartCases )( 
            IDMPullCaseSet * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetNextCase )( 
            IDMPullCaseSet * This,
            DM_CaseID *out_pCaseID,
            ULONG *out_pcCapacity,
            ULONG **out_ppLocation);
        
        END_INTERFACE
    } IDMPullCaseSetVtbl;

    interface IDMPullCaseSet
    {
        CONST_VTBL struct IDMPullCaseSetVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMPullCaseSet_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMPullCaseSet_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMPullCaseSet_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMPullCaseSet_IsDense(This)	\
    ( (This)->lpVtbl -> IsDense(This) ) 

#define IDMPullCaseSet_RestartCases(This)	\
    ( (This)->lpVtbl -> RestartCases(This) ) 

#define IDMPullCaseSet_GetNextCase(This,out_pCaseID,out_pcCapacity,out_ppLocation)	\
    ( (This)->lpVtbl -> GetNextCase(This,out_pCaseID,out_pcCapacity,out_ppLocation) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMPullCaseSet_IsDense_Proxy( 
    IDMPullCaseSet * This);


void __RPC_STUB IDMPullCaseSet_IsDense_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPullCaseSet_RestartCases_Proxy( 
    IDMPullCaseSet * This);


void __RPC_STUB IDMPullCaseSet_RestartCases_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPullCaseSet_GetNextCase_Proxy( 
    IDMPullCaseSet * This,
    DM_CaseID *out_pCaseID,
    ULONG *out_pcCapacity,
    ULONG **out_ppLocation);


void __RPC_STUB IDMPullCaseSet_GetNextCase_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMPullCaseSet_INTERFACE_DEFINED__ */


#ifndef __IDMMarginalStat_INTERFACE_DEFINED__
#define __IDMMarginalStat_INTERFACE_DEFINED__

/* interface IDMMarginalStat */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMMarginalStat;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("6DD48F13-9D16-484f-9AC5-51C6F0CACA82")
    IDMMarginalStat : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetTotalCasesCount( 
            /* [in] */ IDMContextServices *in_pExeContext,
            /* [out] */ ULONG *out_pulCount) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCasesCount( 
            /* [in] */ IDMContextServices *in_pExeContext,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ DM_State in_State,
            /* [out] */ ULONG *out_pulCount) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttributeStats( 
            /* [in] */ IDMContextServices *in_pExeContext,
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ DM_ATTRIBUTE_STAT *io_pAttributeStats) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCaseDensity( 
            /* [in] */ IDMContextServices *in_pExeContext,
            /* [out] */ DOUBLE *out_pdblDensity) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMMarginalStatVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMMarginalStat * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMMarginalStat * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMMarginalStat * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetTotalCasesCount )( 
            IDMMarginalStat * This,
            /* [in] */ IDMContextServices *in_pExeContext,
            /* [out] */ ULONG *out_pulCount);
        
        HRESULT ( STDMETHODCALLTYPE *GetCasesCount )( 
            IDMMarginalStat * This,
            /* [in] */ IDMContextServices *in_pExeContext,
            /* [in] */ DM_Attribute in_Attribute,
            /* [in] */ DM_State in_State,
            /* [out] */ ULONG *out_pulCount);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeStats )( 
            IDMMarginalStat * This,
            /* [in] */ IDMContextServices *in_pExeContext,
            /* [in] */ DM_Attribute in_Attribute,
            /* [out] */ DM_ATTRIBUTE_STAT *io_pAttributeStats);
        
        HRESULT ( STDMETHODCALLTYPE *GetCaseDensity )( 
            IDMMarginalStat * This,
            /* [in] */ IDMContextServices *in_pExeContext,
            /* [out] */ DOUBLE *out_pdblDensity);
        
        END_INTERFACE
    } IDMMarginalStatVtbl;

    interface IDMMarginalStat
    {
        CONST_VTBL struct IDMMarginalStatVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMMarginalStat_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMMarginalStat_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMMarginalStat_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMMarginalStat_GetTotalCasesCount(This,in_pExeContext,out_pulCount)	\
    ( (This)->lpVtbl -> GetTotalCasesCount(This,in_pExeContext,out_pulCount) ) 

#define IDMMarginalStat_GetCasesCount(This,in_pExeContext,in_Attribute,in_State,out_pulCount)	\
    ( (This)->lpVtbl -> GetCasesCount(This,in_pExeContext,in_Attribute,in_State,out_pulCount) ) 

#define IDMMarginalStat_GetAttributeStats(This,in_pExeContext,in_Attribute,io_pAttributeStats)	\
    ( (This)->lpVtbl -> GetAttributeStats(This,in_pExeContext,in_Attribute,io_pAttributeStats) ) 

#define IDMMarginalStat_GetCaseDensity(This,in_pExeContext,out_pdblDensity)	\
    ( (This)->lpVtbl -> GetCaseDensity(This,in_pExeContext,out_pdblDensity) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMMarginalStat_GetTotalCasesCount_Proxy( 
    IDMMarginalStat * This,
    /* [in] */ IDMContextServices *in_pExeContext,
    /* [out] */ ULONG *out_pulCount);


void __RPC_STUB IDMMarginalStat_GetTotalCasesCount_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMMarginalStat_GetCasesCount_Proxy( 
    IDMMarginalStat * This,
    /* [in] */ IDMContextServices *in_pExeContext,
    /* [in] */ DM_Attribute in_Attribute,
    /* [in] */ DM_State in_State,
    /* [out] */ ULONG *out_pulCount);


void __RPC_STUB IDMMarginalStat_GetCasesCount_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMMarginalStat_GetAttributeStats_Proxy( 
    IDMMarginalStat * This,
    /* [in] */ IDMContextServices *in_pExeContext,
    /* [in] */ DM_Attribute in_Attribute,
    /* [out] */ DM_ATTRIBUTE_STAT *io_pAttributeStats);


void __RPC_STUB IDMMarginalStat_GetAttributeStats_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMMarginalStat_GetCaseDensity_Proxy( 
    IDMMarginalStat * This,
    /* [in] */ IDMContextServices *in_pExeContext,
    /* [out] */ DOUBLE *out_pdblDensity);


void __RPC_STUB IDMMarginalStat_GetCaseDensity_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMMarginalStat_INTERFACE_DEFINED__ */


#ifndef __IDMAlgorithm_INTERFACE_DEFINED__
#define __IDMAlgorithm_INTERFACE_DEFINED__

/* interface IDMAlgorithm */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMAlgorithm;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("4295259B-BBDE-4369-823B-B70ADC1F3B6F")
    IDMAlgorithm : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Initialize( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ IDMAttributeSet *in_pAttributeSet,
            /* [in] */ IDMMarginalStat *in_pMarginalStat) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE InsertCases( 
            /* [in] */ IDMContextServices *in_pExeContext,
            /* [in] */ IDMPushCaseSet *in_pCaseSet,
            /* [in] */ ULONG in_ulNumParameters,
            /* [in] */ WCHAR *in_rgParameterNames[  ],
            /* [in] */ DMVariantPtr in_rgParameterValues[  ]) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Predict( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_PREDICTION_FLAGS in_Flags,
            /* [in] */ IDMAttributeGroup *in_pPredAttGroup,
            /* [in] */ DM_CaseID in_CaseID,
            /* [in] */ ULONG in_ulCaseValues,
            /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
            /* [in] */ ULONG in_ulMaxPredictions,
            /* [in] */ ULONG in_ulMaxStates,
            /* [out] */ DM_ATTRIBUTE_STAT **io_prgPredictions,
            /* [out] */ ULONG *out_pulPredictions) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNodeIDsForCase( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_NODE_FLAGS in_Flags,
            /* [in] */ DM_CaseID in_CaseID,
            /* [in] */ ULONG in_ulCaseValues,
            /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
            /* [in] */ ULONG in_ulMaxNodeIDs,
            /* [out] */ DMStringPtr **io_prgNodeIDs,
            /* [out] */ ULONG *out_pulNodeIDs) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNavigator( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ BOOL in_fForDMDimensionContent,
            /* [out] */ IDMAlgorithmNavigation **out_ppDAGNav) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSampleCaseSet( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DMString *in_pstrNodeID,
            /* [out] */ IDMPullCaseSet **out_ppCaseSet) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTrainingParameterActualValue( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [in] */ DMVariantPtr io_pParameterValue) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE HasFeatureSelection( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pHasFS) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetFeatureSelectedAttributes( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ULONG *out_pCount,
            /* [out] */ DM_Attribute **out_prgFeatureSelectedAttributes,
            /* [out] */ DM_ATTRIBUTE_FLAGS **out_prgFSAttributeFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAttributeFeatureSelectionFlags( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_Attribute in_nAttr,
            /* [out] */ DM_ATTRIBUTE_FLAGS *out_pAttFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetProcessingMemoryEstimate( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pEstimate) = 0;
        
        virtual void STDMETHODCALLTYPE UpdateMemoryEstimate( 
            /* [in] */ LONG in_lEstimateChange) = 0;
        
        virtual LONG STDMETHODCALLTYPE ReservedMemoryEstimate( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE RenderPMMLContent( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ISAXContentHandler *in_pXMLWriter) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE PreInitializeForPMML21Parsing( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ IDMAttributeSet *in_pAttributeSet) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetPMMLAlgorithmSAXHandler( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ISAXContentHandler **out_ppSAXHandler) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMAlgorithmVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMAlgorithm * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMAlgorithm * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMAlgorithm * This);
        
        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ IDMAttributeSet *in_pAttributeSet,
            /* [in] */ IDMMarginalStat *in_pMarginalStat);
        
        HRESULT ( STDMETHODCALLTYPE *InsertCases )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pExeContext,
            /* [in] */ IDMPushCaseSet *in_pCaseSet,
            /* [in] */ ULONG in_ulNumParameters,
            /* [in] */ WCHAR *in_rgParameterNames[  ],
            /* [in] */ DMVariantPtr in_rgParameterValues[  ]);
        
        HRESULT ( STDMETHODCALLTYPE *Predict )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_PREDICTION_FLAGS in_Flags,
            /* [in] */ IDMAttributeGroup *in_pPredAttGroup,
            /* [in] */ DM_CaseID in_CaseID,
            /* [in] */ ULONG in_ulCaseValues,
            /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
            /* [in] */ ULONG in_ulMaxPredictions,
            /* [in] */ ULONG in_ulMaxStates,
            /* [out] */ DM_ATTRIBUTE_STAT **io_prgPredictions,
            /* [out] */ ULONG *out_pulPredictions);
        
        HRESULT ( STDMETHODCALLTYPE *GetNodeIDsForCase )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_NODE_FLAGS in_Flags,
            /* [in] */ DM_CaseID in_CaseID,
            /* [in] */ ULONG in_ulCaseValues,
            /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
            /* [in] */ ULONG in_ulMaxNodeIDs,
            /* [out] */ DMStringPtr **io_prgNodeIDs,
            /* [out] */ ULONG *out_pulNodeIDs);
        
        HRESULT ( STDMETHODCALLTYPE *GetNavigator )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ BOOL in_fForDMDimensionContent,
            /* [out] */ IDMAlgorithmNavigation **out_ppDAGNav);
        
        HRESULT ( STDMETHODCALLTYPE *GetSampleCaseSet )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DMString *in_pstrNodeID,
            /* [out] */ IDMPullCaseSet **out_ppCaseSet);
        
        HRESULT ( STDMETHODCALLTYPE *GetTrainingParameterActualValue )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [in] */ DMVariantPtr io_pParameterValue);
        
        HRESULT ( STDMETHODCALLTYPE *HasFeatureSelection )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pHasFS);
        
        HRESULT ( STDMETHODCALLTYPE *GetFeatureSelectedAttributes )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ULONG *out_pCount,
            /* [out] */ DM_Attribute **out_prgFeatureSelectedAttributes,
            /* [out] */ DM_ATTRIBUTE_FLAGS **out_prgFSAttributeFlags);
        
        HRESULT ( STDMETHODCALLTYPE *GetAttributeFeatureSelectionFlags )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_Attribute in_nAttr,
            /* [out] */ DM_ATTRIBUTE_FLAGS *out_pAttFlags);
        
        HRESULT ( STDMETHODCALLTYPE *GetProcessingMemoryEstimate )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pEstimate);
        
        void ( STDMETHODCALLTYPE *UpdateMemoryEstimate )( 
            IDMAlgorithm * This,
            /* [in] */ LONG in_lEstimateChange);
        
        LONG ( STDMETHODCALLTYPE *ReservedMemoryEstimate )( 
            IDMAlgorithm * This);
        
        HRESULT ( STDMETHODCALLTYPE *RenderPMMLContent )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ISAXContentHandler *in_pXMLWriter);
        
        HRESULT ( STDMETHODCALLTYPE *PreInitializeForPMML21Parsing )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ IDMAttributeSet *in_pAttributeSet);
        
        HRESULT ( STDMETHODCALLTYPE *GetPMMLAlgorithmSAXHandler )( 
            IDMAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ISAXContentHandler **out_ppSAXHandler);
        
        END_INTERFACE
    } IDMAlgorithmVtbl;

    interface IDMAlgorithm
    {
        CONST_VTBL struct IDMAlgorithmVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMAlgorithm_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMAlgorithm_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMAlgorithm_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMAlgorithm_Initialize(This,in_pContext,in_pAttributeSet,in_pMarginalStat)	\
    ( (This)->lpVtbl -> Initialize(This,in_pContext,in_pAttributeSet,in_pMarginalStat) ) 

#define IDMAlgorithm_InsertCases(This,in_pExeContext,in_pCaseSet,in_ulNumParameters,in_rgParameterNames,in_rgParameterValues)	\
    ( (This)->lpVtbl -> InsertCases(This,in_pExeContext,in_pCaseSet,in_ulNumParameters,in_rgParameterNames,in_rgParameterValues) ) 

#define IDMAlgorithm_Predict(This,in_pContext,in_Flags,in_pPredAttGroup,in_CaseID,in_ulCaseValues,in_rgValues,in_ulMaxPredictions,in_ulMaxStates,io_prgPredictions,out_pulPredictions)	\
    ( (This)->lpVtbl -> Predict(This,in_pContext,in_Flags,in_pPredAttGroup,in_CaseID,in_ulCaseValues,in_rgValues,in_ulMaxPredictions,in_ulMaxStates,io_prgPredictions,out_pulPredictions) ) 

#define IDMAlgorithm_GetNodeIDsForCase(This,in_pContext,in_Flags,in_CaseID,in_ulCaseValues,in_rgValues,in_ulMaxNodeIDs,io_prgNodeIDs,out_pulNodeIDs)	\
    ( (This)->lpVtbl -> GetNodeIDsForCase(This,in_pContext,in_Flags,in_CaseID,in_ulCaseValues,in_rgValues,in_ulMaxNodeIDs,io_prgNodeIDs,out_pulNodeIDs) ) 

#define IDMAlgorithm_GetNavigator(This,in_pContext,in_fForDMDimensionContent,out_ppDAGNav)	\
    ( (This)->lpVtbl -> GetNavigator(This,in_pContext,in_fForDMDimensionContent,out_ppDAGNav) ) 

#define IDMAlgorithm_GetSampleCaseSet(This,in_pContext,in_pstrNodeID,out_ppCaseSet)	\
    ( (This)->lpVtbl -> GetSampleCaseSet(This,in_pContext,in_pstrNodeID,out_ppCaseSet) ) 

#define IDMAlgorithm_GetTrainingParameterActualValue(This,in_pContext,in_iParameter,io_pParameterValue)	\
    ( (This)->lpVtbl -> GetTrainingParameterActualValue(This,in_pContext,in_iParameter,io_pParameterValue) ) 

#define IDMAlgorithm_HasFeatureSelection(This,in_pContext,out_pHasFS)	\
    ( (This)->lpVtbl -> HasFeatureSelection(This,in_pContext,out_pHasFS) ) 

#define IDMAlgorithm_GetFeatureSelectedAttributes(This,in_pContext,out_pCount,out_prgFeatureSelectedAttributes,out_prgFSAttributeFlags)	\
    ( (This)->lpVtbl -> GetFeatureSelectedAttributes(This,in_pContext,out_pCount,out_prgFeatureSelectedAttributes,out_prgFSAttributeFlags) ) 

#define IDMAlgorithm_GetAttributeFeatureSelectionFlags(This,in_pContext,in_nAttr,out_pAttFlags)	\
    ( (This)->lpVtbl -> GetAttributeFeatureSelectionFlags(This,in_pContext,in_nAttr,out_pAttFlags) ) 

#define IDMAlgorithm_GetProcessingMemoryEstimate(This,in_pContext,out_pEstimate)	\
    ( (This)->lpVtbl -> GetProcessingMemoryEstimate(This,in_pContext,out_pEstimate) ) 

#define IDMAlgorithm_UpdateMemoryEstimate(This,in_lEstimateChange)	\
    ( (This)->lpVtbl -> UpdateMemoryEstimate(This,in_lEstimateChange) ) 

#define IDMAlgorithm_ReservedMemoryEstimate(This)	\
    ( (This)->lpVtbl -> ReservedMemoryEstimate(This) ) 

#define IDMAlgorithm_RenderPMMLContent(This,in_pContext,in_pXMLWriter)	\
    ( (This)->lpVtbl -> RenderPMMLContent(This,in_pContext,in_pXMLWriter) ) 

#define IDMAlgorithm_PreInitializeForPMML21Parsing(This,in_pContext,in_pAttributeSet)	\
    ( (This)->lpVtbl -> PreInitializeForPMML21Parsing(This,in_pContext,in_pAttributeSet) ) 

#define IDMAlgorithm_GetPMMLAlgorithmSAXHandler(This,in_pContext,out_ppSAXHandler)	\
    ( (This)->lpVtbl -> GetPMMLAlgorithmSAXHandler(This,in_pContext,out_ppSAXHandler) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMAlgorithm_Initialize_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ IDMAttributeSet *in_pAttributeSet,
    /* [in] */ IDMMarginalStat *in_pMarginalStat);


void __RPC_STUB IDMAlgorithm_Initialize_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithm_InsertCases_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pExeContext,
    /* [in] */ IDMPushCaseSet *in_pCaseSet,
    /* [in] */ ULONG in_ulNumParameters,
    /* [in] */ WCHAR *in_rgParameterNames[  ],
    /* [in] */ DMVariantPtr in_rgParameterValues[  ]);


void __RPC_STUB IDMAlgorithm_InsertCases_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithm_Predict_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_PREDICTION_FLAGS in_Flags,
    /* [in] */ IDMAttributeGroup *in_pPredAttGroup,
    /* [in] */ DM_CaseID in_CaseID,
    /* [in] */ ULONG in_ulCaseValues,
    /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
    /* [in] */ ULONG in_ulMaxPredictions,
    /* [in] */ ULONG in_ulMaxStates,
    /* [out] */ DM_ATTRIBUTE_STAT **io_prgPredictions,
    /* [out] */ ULONG *out_pulPredictions);


void __RPC_STUB IDMAlgorithm_Predict_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithm_GetNodeIDsForCase_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_NODE_FLAGS in_Flags,
    /* [in] */ DM_CaseID in_CaseID,
    /* [in] */ ULONG in_ulCaseValues,
    /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
    /* [in] */ ULONG in_ulMaxNodeIDs,
    /* [out] */ DMStringPtr **io_prgNodeIDs,
    /* [out] */ ULONG *out_pulNodeIDs);


void __RPC_STUB IDMAlgorithm_GetNodeIDsForCase_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithm_GetNavigator_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ BOOL in_fForDMDimensionContent,
    /* [out] */ IDMAlgorithmNavigation **out_ppDAGNav);


void __RPC_STUB IDMAlgorithm_GetNavigator_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithm_GetSampleCaseSet_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DMString *in_pstrNodeID,
    /* [out] */ IDMPullCaseSet **out_ppCaseSet);


void __RPC_STUB IDMAlgorithm_GetSampleCaseSet_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithm_GetTrainingParameterActualValue_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ULONG in_iParameter,
    /* [in] */ DMVariantPtr io_pParameterValue);


void __RPC_STUB IDMAlgorithm_GetTrainingParameterActualValue_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithm_HasFeatureSelection_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ BOOL *out_pHasFS);


void __RPC_STUB IDMAlgorithm_HasFeatureSelection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithm_GetFeatureSelectedAttributes_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ ULONG *out_pCount,
    /* [out] */ DM_Attribute **out_prgFeatureSelectedAttributes,
    /* [out] */ DM_ATTRIBUTE_FLAGS **out_prgFSAttributeFlags);


void __RPC_STUB IDMAlgorithm_GetFeatureSelectedAttributes_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithm_GetAttributeFeatureSelectionFlags_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_Attribute in_nAttr,
    /* [out] */ DM_ATTRIBUTE_FLAGS *out_pAttFlags);


void __RPC_STUB IDMAlgorithm_GetAttributeFeatureSelectionFlags_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithm_GetProcessingMemoryEstimate_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ LONG *out_pEstimate);


void __RPC_STUB IDMAlgorithm_GetProcessingMemoryEstimate_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


void STDMETHODCALLTYPE IDMAlgorithm_UpdateMemoryEstimate_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ LONG in_lEstimateChange);


void __RPC_STUB IDMAlgorithm_UpdateMemoryEstimate_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


LONG STDMETHODCALLTYPE IDMAlgorithm_ReservedMemoryEstimate_Proxy( 
    IDMAlgorithm * This);


void __RPC_STUB IDMAlgorithm_ReservedMemoryEstimate_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithm_RenderPMMLContent_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ISAXContentHandler *in_pXMLWriter);


void __RPC_STUB IDMAlgorithm_RenderPMMLContent_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithm_PreInitializeForPMML21Parsing_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ IDMAttributeSet *in_pAttributeSet);


void __RPC_STUB IDMAlgorithm_PreInitializeForPMML21Parsing_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithm_GetPMMLAlgorithmSAXHandler_Proxy( 
    IDMAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ ISAXContentHandler **out_ppSAXHandler);


void __RPC_STUB IDMAlgorithm_GetPMMLAlgorithmSAXHandler_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMAlgorithm_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_dmalgo_0218 */
/* [local] */ 


enum DM_CLUSTER_MEMBERSHIP_FLAGS_ENUM
    {	DMCMF_ORDER_NODES	= 0x1,
	DMCMF_INCLUDE_CAPTION	= 0x2,
	DMCMF_INCLUDE_NODE_ID	= 0x4
    } ;
typedef DWORD DM_CLUSTER_MEMBERSHIP_FLAGS;

typedef /* [public][public] */ struct __MIDL___MIDL_itf_dmalgo_0218_0001
    {
    ULONG ulClusterID;
    DMStringPtr strCaption;
    DMStringPtr strNodeID;
    DOUBLE dblDistance;
    DOUBLE dblMembership;
    } 	DM_CLUSTER_MEMBERSHIP;


enum DM_CASE_LIKELIHOOD_FLAGS_ENUM
    {	DMCLF_NONNORMALIZED	= 0x1
    } ;
typedef DWORD DM_CASE_LIKELIHOOD_FLAGS;



extern RPC_IF_HANDLE __MIDL_itf_dmalgo_0218_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_dmalgo_0218_v0_0_s_ifspec;

#ifndef __IDMClusteringAlgorithm_INTERFACE_DEFINED__
#define __IDMClusteringAlgorithm_INTERFACE_DEFINED__

/* interface IDMClusteringAlgorithm */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMClusteringAlgorithm;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("1B41EFC0-3E15-11d3-8C7A-00600832DCED")
    IDMClusteringAlgorithm : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE ClusterMembership( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_CLUSTER_MEMBERSHIP_FLAGS in_Flags,
            /* [in] */ DMStringPtr in_strClusterCaption,
            /* [in] */ DM_CaseID in_CaseID,
            /* [in] */ ULONG in_ulCaseValues,
            /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
            /* [in] */ ULONG in_ulMaxClusters,
            /* [out] */ DM_CLUSTER_MEMBERSHIP **io_prgClusters,
            /* [out] */ ULONG *out_pulClusters) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CaseLikelihood( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_CASE_LIKELIHOOD_FLAGS in_Flags,
            /* [in] */ DM_CaseID in_CaseID,
            /* [in] */ ULONG in_ulCaseValues,
            /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
            /* [out] */ DOUBLE *out_pdblCaseLikelihood) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMClusteringAlgorithmVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMClusteringAlgorithm * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMClusteringAlgorithm * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMClusteringAlgorithm * This);
        
        HRESULT ( STDMETHODCALLTYPE *ClusterMembership )( 
            IDMClusteringAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_CLUSTER_MEMBERSHIP_FLAGS in_Flags,
            /* [in] */ DMStringPtr in_strClusterCaption,
            /* [in] */ DM_CaseID in_CaseID,
            /* [in] */ ULONG in_ulCaseValues,
            /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
            /* [in] */ ULONG in_ulMaxClusters,
            /* [out] */ DM_CLUSTER_MEMBERSHIP **io_prgClusters,
            /* [out] */ ULONG *out_pulClusters);
        
        HRESULT ( STDMETHODCALLTYPE *CaseLikelihood )( 
            IDMClusteringAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_CASE_LIKELIHOOD_FLAGS in_Flags,
            /* [in] */ DM_CaseID in_CaseID,
            /* [in] */ ULONG in_ulCaseValues,
            /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
            /* [out] */ DOUBLE *out_pdblCaseLikelihood);
        
        END_INTERFACE
    } IDMClusteringAlgorithmVtbl;

    interface IDMClusteringAlgorithm
    {
        CONST_VTBL struct IDMClusteringAlgorithmVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMClusteringAlgorithm_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMClusteringAlgorithm_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMClusteringAlgorithm_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMClusteringAlgorithm_ClusterMembership(This,in_pContext,in_Flags,in_strClusterCaption,in_CaseID,in_ulCaseValues,in_rgValues,in_ulMaxClusters,io_prgClusters,out_pulClusters)	\
    ( (This)->lpVtbl -> ClusterMembership(This,in_pContext,in_Flags,in_strClusterCaption,in_CaseID,in_ulCaseValues,in_rgValues,in_ulMaxClusters,io_prgClusters,out_pulClusters) ) 

#define IDMClusteringAlgorithm_CaseLikelihood(This,in_pContext,in_Flags,in_CaseID,in_ulCaseValues,in_rgValues,out_pdblCaseLikelihood)	\
    ( (This)->lpVtbl -> CaseLikelihood(This,in_pContext,in_Flags,in_CaseID,in_ulCaseValues,in_rgValues,out_pdblCaseLikelihood) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMClusteringAlgorithm_ClusterMembership_Proxy( 
    IDMClusteringAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_CLUSTER_MEMBERSHIP_FLAGS in_Flags,
    /* [in] */ DMStringPtr in_strClusterCaption,
    /* [in] */ DM_CaseID in_CaseID,
    /* [in] */ ULONG in_ulCaseValues,
    /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
    /* [in] */ ULONG in_ulMaxClusters,
    /* [out] */ DM_CLUSTER_MEMBERSHIP **io_prgClusters,
    /* [out] */ ULONG *out_pulClusters);


void __RPC_STUB IDMClusteringAlgorithm_ClusterMembership_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMClusteringAlgorithm_CaseLikelihood_Proxy( 
    IDMClusteringAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_CASE_LIKELIHOOD_FLAGS in_Flags,
    /* [in] */ DM_CaseID in_CaseID,
    /* [in] */ ULONG in_ulCaseValues,
    /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
    /* [out] */ DOUBLE *out_pdblCaseLikelihood);


void __RPC_STUB IDMClusteringAlgorithm_CaseLikelihood_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMClusteringAlgorithm_INTERFACE_DEFINED__ */


#ifndef __IDMSequenceAlgorithm_INTERFACE_DEFINED__
#define __IDMSequenceAlgorithm_INTERFACE_DEFINED__

/* interface IDMSequenceAlgorithm */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMSequenceAlgorithm;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("C76D0195-D67F-4676-990B-D6D36A3901C2")
    IDMSequenceAlgorithm : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE PredictSequence( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_PREDICTION_FLAGS in_Flags,
            /* [in] */ IDMAttributeGroup *in_pSeqAttGroup,
            /* [in] */ LONG in_lStartSeqence,
            /* [in] */ LONG in_lEndSeqence,
            /* [in] */ DM_CaseID in_CaseID,
            /* [in] */ ULONG in_ulCaseValues,
            /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
            /* [in] */ ULONG in_ulMaxStates,
            /* [out] */ DM_ATTRIBUTE_STAT **io_prgAttStats,
            /* [out] */ ULONG *out_pulAttStats) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMSequenceAlgorithmVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMSequenceAlgorithm * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMSequenceAlgorithm * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMSequenceAlgorithm * This);
        
        HRESULT ( STDMETHODCALLTYPE *PredictSequence )( 
            IDMSequenceAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_PREDICTION_FLAGS in_Flags,
            /* [in] */ IDMAttributeGroup *in_pSeqAttGroup,
            /* [in] */ LONG in_lStartSeqence,
            /* [in] */ LONG in_lEndSeqence,
            /* [in] */ DM_CaseID in_CaseID,
            /* [in] */ ULONG in_ulCaseValues,
            /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
            /* [in] */ ULONG in_ulMaxStates,
            /* [out] */ DM_ATTRIBUTE_STAT **io_prgAttStats,
            /* [out] */ ULONG *out_pulAttStats);
        
        END_INTERFACE
    } IDMSequenceAlgorithmVtbl;

    interface IDMSequenceAlgorithm
    {
        CONST_VTBL struct IDMSequenceAlgorithmVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMSequenceAlgorithm_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMSequenceAlgorithm_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMSequenceAlgorithm_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMSequenceAlgorithm_PredictSequence(This,in_pContext,in_Flags,in_pSeqAttGroup,in_lStartSeqence,in_lEndSeqence,in_CaseID,in_ulCaseValues,in_rgValues,in_ulMaxStates,io_prgAttStats,out_pulAttStats)	\
    ( (This)->lpVtbl -> PredictSequence(This,in_pContext,in_Flags,in_pSeqAttGroup,in_lStartSeqence,in_lEndSeqence,in_CaseID,in_ulCaseValues,in_rgValues,in_ulMaxStates,io_prgAttStats,out_pulAttStats) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMSequenceAlgorithm_PredictSequence_Proxy( 
    IDMSequenceAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_PREDICTION_FLAGS in_Flags,
    /* [in] */ IDMAttributeGroup *in_pSeqAttGroup,
    /* [in] */ LONG in_lStartSeqence,
    /* [in] */ LONG in_lEndSeqence,
    /* [in] */ DM_CaseID in_CaseID,
    /* [in] */ ULONG in_ulCaseValues,
    /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
    /* [in] */ ULONG in_ulMaxStates,
    /* [out] */ DM_ATTRIBUTE_STAT **io_prgAttStats,
    /* [out] */ ULONG *out_pulAttStats);


void __RPC_STUB IDMSequenceAlgorithm_PredictSequence_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMSequenceAlgorithm_INTERFACE_DEFINED__ */


#ifndef __IDMTimeSeriesAlgorithm_INTERFACE_DEFINED__
#define __IDMTimeSeriesAlgorithm_INTERFACE_DEFINED__

/* interface IDMTimeSeriesAlgorithm */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMTimeSeriesAlgorithm;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("AB9476FC-A3AA-4e9d-8770-0C144FD72628")
    IDMTimeSeriesAlgorithm : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE PredictTimeSeries( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_PREDICTION_FLAGS in_Flags,
            /* [in] */ IDMAttributeGroup *in_pAttGroup,
            /* [in] */ LONG in_lStartTime,
            /* [in] */ LONG in_lEndTime,
            /* [in] */ DM_CaseID in_CaseID,
            /* [out] */ DM_ATTRIBUTE_STAT **io_prgAttStats,
            /* [out] */ DMVariantPtr **io_prgTimes,
            /* [out] */ ULONG *out_pulPredictions) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetLag( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DOUBLE in_dblTimestamp,
            /* [out] */ LONG *out_plLag) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMTimeSeriesAlgorithmVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMTimeSeriesAlgorithm * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMTimeSeriesAlgorithm * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMTimeSeriesAlgorithm * This);
        
        HRESULT ( STDMETHODCALLTYPE *PredictTimeSeries )( 
            IDMTimeSeriesAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_PREDICTION_FLAGS in_Flags,
            /* [in] */ IDMAttributeGroup *in_pAttGroup,
            /* [in] */ LONG in_lStartTime,
            /* [in] */ LONG in_lEndTime,
            /* [in] */ DM_CaseID in_CaseID,
            /* [out] */ DM_ATTRIBUTE_STAT **io_prgAttStats,
            /* [out] */ DMVariantPtr **io_prgTimes,
            /* [out] */ ULONG *out_pulPredictions);
        
        HRESULT ( STDMETHODCALLTYPE *GetLag )( 
            IDMTimeSeriesAlgorithm * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DOUBLE in_dblTimestamp,
            /* [out] */ LONG *out_plLag);
        
        END_INTERFACE
    } IDMTimeSeriesAlgorithmVtbl;

    interface IDMTimeSeriesAlgorithm
    {
        CONST_VTBL struct IDMTimeSeriesAlgorithmVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMTimeSeriesAlgorithm_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMTimeSeriesAlgorithm_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMTimeSeriesAlgorithm_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMTimeSeriesAlgorithm_PredictTimeSeries(This,in_pContext,in_Flags,in_pAttGroup,in_lStartTime,in_lEndTime,in_CaseID,io_prgAttStats,io_prgTimes,out_pulPredictions)	\
    ( (This)->lpVtbl -> PredictTimeSeries(This,in_pContext,in_Flags,in_pAttGroup,in_lStartTime,in_lEndTime,in_CaseID,io_prgAttStats,io_prgTimes,out_pulPredictions) ) 

#define IDMTimeSeriesAlgorithm_GetLag(This,in_pContext,in_dblTimestamp,out_plLag)	\
    ( (This)->lpVtbl -> GetLag(This,in_pContext,in_dblTimestamp,out_plLag) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMTimeSeriesAlgorithm_PredictTimeSeries_Proxy( 
    IDMTimeSeriesAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_PREDICTION_FLAGS in_Flags,
    /* [in] */ IDMAttributeGroup *in_pAttGroup,
    /* [in] */ LONG in_lStartTime,
    /* [in] */ LONG in_lEndTime,
    /* [in] */ DM_CaseID in_CaseID,
    /* [out] */ DM_ATTRIBUTE_STAT **io_prgAttStats,
    /* [out] */ DMVariantPtr **io_prgTimes,
    /* [out] */ ULONG *out_pulPredictions);


void __RPC_STUB IDMTimeSeriesAlgorithm_PredictTimeSeries_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMTimeSeriesAlgorithm_GetLag_Proxy( 
    IDMTimeSeriesAlgorithm * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DOUBLE in_dblTimestamp,
    /* [out] */ LONG *out_plLag);


void __RPC_STUB IDMTimeSeriesAlgorithm_GetLag_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMTimeSeriesAlgorithm_INTERFACE_DEFINED__ */


#ifndef __IDMAlgorithmFactory_INTERFACE_DEFINED__
#define __IDMAlgorithmFactory_INTERFACE_DEFINED__

/* interface IDMAlgorithmFactory */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMAlgorithmFactory;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("E7836713-6D69-49a5-AD16-E5D55202B027")
    IDMAlgorithmFactory : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE CreateAlgorithm( 
            /* [in] */ IDMModelServices *in_pModel,
            /* [out] */ IDMAlgorithm **out_ppAlgorithm) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMAlgorithmFactoryVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMAlgorithmFactory * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMAlgorithmFactory * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMAlgorithmFactory * This);
        
        HRESULT ( STDMETHODCALLTYPE *CreateAlgorithm )( 
            IDMAlgorithmFactory * This,
            /* [in] */ IDMModelServices *in_pModel,
            /* [out] */ IDMAlgorithm **out_ppAlgorithm);
        
        END_INTERFACE
    } IDMAlgorithmFactoryVtbl;

    interface IDMAlgorithmFactory
    {
        CONST_VTBL struct IDMAlgorithmFactoryVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMAlgorithmFactory_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMAlgorithmFactory_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMAlgorithmFactory_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMAlgorithmFactory_CreateAlgorithm(This,in_pModel,out_ppAlgorithm)	\
    ( (This)->lpVtbl -> CreateAlgorithm(This,in_pModel,out_ppAlgorithm) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMAlgorithmFactory_CreateAlgorithm_Proxy( 
    IDMAlgorithmFactory * This,
    /* [in] */ IDMModelServices *in_pModel,
    /* [out] */ IDMAlgorithm **out_ppAlgorithm);


void __RPC_STUB IDMAlgorithmFactory_CreateAlgorithm_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMAlgorithmFactory_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_dmalgo_0222 */
/* [local] */ 


enum DM_SUPPORTED_FUNCTION_ENUM
    {	DMSF_INVALID	= -1,
	DMSF_Predict_Scalar	= 0,
	DMSF_Predict_Table	= ( DMSF_Predict_Scalar + 1 ) ,
	DMSF_PredictAssociation	= ( DMSF_Predict_Table + 1 ) ,
	DMSF_PredictSequence	= ( DMSF_PredictAssociation + 1 ) ,
	DMSF_PredictTimeSeries	= ( DMSF_PredictSequence + 1 ) ,
	DMSF_PredictSupport	= ( DMSF_PredictTimeSeries + 1 ) ,
	DMSF_PredictVariance	= ( DMSF_PredictSupport + 1 ) ,
	DMSF_PredictStdev	= ( DMSF_PredictVariance + 1 ) ,
	DMSF_PredictProbablility	= ( DMSF_PredictStdev + 1 ) ,
	DMSF_PredictAdjustedProbability	= ( DMSF_PredictProbablility + 1 ) ,
	DMSF_Cluster	= ( DMSF_PredictAdjustedProbability + 1 ) ,
	DMSF_ClusterDistance	= ( DMSF_Cluster + 1 ) ,
	DMSF_ClusterProbability	= ( DMSF_ClusterDistance + 1 ) ,
	DMSF_PredictHistogram	= ( DMSF_ClusterProbability + 1 ) ,
	DMSF_ClusterPredictHistogram	= ( DMSF_PredictHistogram + 1 ) ,
	DMSF_TopCount	= ( DMSF_ClusterPredictHistogram + 1 ) ,
	DMSF_BottomCount	= ( DMSF_TopCount + 1 ) ,
	DMSF_TopSum	= ( DMSF_BottomCount + 1 ) ,
	DMSF_BottomSum	= ( DMSF_TopSum + 1 ) ,
	DMSF_TopPercent	= ( DMSF_BottomSum + 1 ) ,
	DMSF_BottomPercent	= ( DMSF_TopPercent + 1 ) ,
	DMSF_RangeMid	= ( DMSF_BottomPercent + 1 ) ,
	DMSF_RangeMin	= ( DMSF_RangeMid + 1 ) ,
	DMSF_RangeMax	= ( DMSF_RangeMin + 1 ) ,
	DMSF_PredictNodeId	= ( DMSF_RangeMax + 1 ) ,
	DMSF_IsInNode	= ( DMSF_PredictNodeId + 1 ) ,
	DMSF_IsDescendent	= ( DMSF_IsInNode + 1 ) ,
	DMSF_DCluster	= ( DMSF_IsDescendent + 1 ) ,
	DMSF_DProbability	= ( DMSF_DCluster + 1 ) ,
	DMSF_DAdjustedProbability	= ( DMSF_DProbability + 1 ) ,
	DMSF_DStdev	= ( DMSF_DAdjustedProbability + 1 ) ,
	DMSF_DSupport	= ( DMSF_DStdev + 1 ) ,
	DMSF_DVariance	= ( DMSF_DSupport + 1 ) ,
	DMSF_DNodeId	= ( DMSF_DVariance + 1 ) ,
	DMSF_DSequence	= ( DMSF_DNodeId + 1 ) ,
	DMSF_DTime	= ( DMSF_DSequence + 1 ) ,
	DMSF_DDistance	= ( DMSF_DTime + 1 ) ,
	DMSF_Lag	= ( DMSF_DDistance + 1 ) ,
	DMSF_PredictCaseLikelihood	= ( DMSF_Lag + 1 ) ,
	DMSF_CUSTOM_FUNCTION_BASE	= 10000
    } ;
typedef LONG DM_SUPPORTED_FUNCTION;



extern RPC_IF_HANDLE __MIDL_itf_dmalgo_0222_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_dmalgo_0222_v0_0_s_ifspec;

#ifndef __IDMAlgorithmMetadata_INTERFACE_DEFINED__
#define __IDMAlgorithmMetadata_INTERFACE_DEFINED__

/* interface IDMAlgorithmMetadata */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMAlgorithmMetadata;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("FF7AD869-61ED-4da4-8318-1836DA620DF7")
    IDMAlgorithmMetadata : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetServiceType( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ULONG *out_pServiceTypeID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetServiceName( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DMString *io_pstrServiceName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDisplayName( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DMString *io_pstrDisplayName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetServiceGuid( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ GUID *out_pguidServiceGUID) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDescription( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DMString *io_pstrDescription) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetPredictionLimit( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pPredictionLimit) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSupDistributionFlags( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ULONG **out_prgFlags,
            /* [out] */ ULONG *out_cFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSupInputContentTypes( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ULONG **out_prgTypes,
            /* [out] */ ULONG *out_cTypes) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSupPredictContentTypes( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ULONG **out_prgTypes,
            /* [out] */ ULONG *out_cTypes) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSupModelingFlags( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DM_MODELING_FLAG **out_prgFlags,
            /* [out] */ ULONG *out_pcFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetModelingFlagName( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_MODELING_FLAG in_Flag,
            /* [in] */ DMString *io_pstrFlagName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTrainingComplexity( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pTrainingComplexity) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetPredictionComplexity( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pPredictionComplexity) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetExpectedQuality( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pExpectedQuality) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetScaling( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pScaling) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAllowIncrementalInsert( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pfIncrementalInsert) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetAllowDuplicateKey( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pfDuplicateKey) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetControl( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pControl) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetViewerType( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DMString *io_pstrViewerType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSupportsDMDimensions( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pfSupportsDMDimensions) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSupportsDrillthrough( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pfSupportsDrillthrough,
            /* [out] */ BOOL *out_pfMustIncludeChildren) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSupportedFunctions( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DM_SUPPORTED_FUNCTION **out_prgFuncs,
            /* [out] */ ULONG *out_cFuncs) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNumParameters( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ULONG *out_pcParameters) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParameterName( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ DMString *io_pstrParameterName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParameterType( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ DMString *io_pstrParameterType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParameterIsRequired( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ BOOL *out_pfIsRequired) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParameterIsExposed( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ BOOL *out_pfIsExposed) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParameterFlags( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ ULONG *out_pulParameterFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParameterDescription( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [in] */ ULONG in_LocaleID,
            /* [out] */ DMString *io_pstrDescription) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParameterDefaultValue( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ DMString *io_pstrDefaultValue) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParameterValueEnumeration( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ DMString *io_pstrValueEnumeration) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ParseParameterValue( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [in] */ DMString *in_pstrParameterStrValue,
            /* [in] */ DMVariantPtr io_pParameterMappedValue) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetMarginalRequirements( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DMMarginalRequirements *out_pReq) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetCaseIDModelled( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pfIsModelled) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ValidateAttributeSet( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ IDMAttributeSet *in_pAttributeSet) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSupportsPMML( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pfSupportsPMML) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMAlgorithmMetadataVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMAlgorithmMetadata * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMAlgorithmMetadata * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetServiceType )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ULONG *out_pServiceTypeID);
        
        HRESULT ( STDMETHODCALLTYPE *GetServiceName )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DMString *io_pstrServiceName);
        
        HRESULT ( STDMETHODCALLTYPE *GetDisplayName )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DMString *io_pstrDisplayName);
        
        HRESULT ( STDMETHODCALLTYPE *GetServiceGuid )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ GUID *out_pguidServiceGUID);
        
        HRESULT ( STDMETHODCALLTYPE *GetDescription )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DMString *io_pstrDescription);
        
        HRESULT ( STDMETHODCALLTYPE *GetPredictionLimit )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pPredictionLimit);
        
        HRESULT ( STDMETHODCALLTYPE *GetSupDistributionFlags )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ULONG **out_prgFlags,
            /* [out] */ ULONG *out_cFlags);
        
        HRESULT ( STDMETHODCALLTYPE *GetSupInputContentTypes )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ULONG **out_prgTypes,
            /* [out] */ ULONG *out_cTypes);
        
        HRESULT ( STDMETHODCALLTYPE *GetSupPredictContentTypes )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ULONG **out_prgTypes,
            /* [out] */ ULONG *out_cTypes);
        
        HRESULT ( STDMETHODCALLTYPE *GetSupModelingFlags )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DM_MODELING_FLAG **out_prgFlags,
            /* [out] */ ULONG *out_pcFlags);
        
        HRESULT ( STDMETHODCALLTYPE *GetModelingFlagName )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_MODELING_FLAG in_Flag,
            /* [in] */ DMString *io_pstrFlagName);
        
        HRESULT ( STDMETHODCALLTYPE *GetTrainingComplexity )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pTrainingComplexity);
        
        HRESULT ( STDMETHODCALLTYPE *GetPredictionComplexity )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pPredictionComplexity);
        
        HRESULT ( STDMETHODCALLTYPE *GetExpectedQuality )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pExpectedQuality);
        
        HRESULT ( STDMETHODCALLTYPE *GetScaling )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pScaling);
        
        HRESULT ( STDMETHODCALLTYPE *GetAllowIncrementalInsert )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pfIncrementalInsert);
        
        HRESULT ( STDMETHODCALLTYPE *GetAllowDuplicateKey )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pfDuplicateKey);
        
        HRESULT ( STDMETHODCALLTYPE *GetControl )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ LONG *out_pControl);
        
        HRESULT ( STDMETHODCALLTYPE *GetViewerType )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DMString *io_pstrViewerType);
        
        HRESULT ( STDMETHODCALLTYPE *GetSupportsDMDimensions )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pfSupportsDMDimensions);
        
        HRESULT ( STDMETHODCALLTYPE *GetSupportsDrillthrough )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pfSupportsDrillthrough,
            /* [out] */ BOOL *out_pfMustIncludeChildren);
        
        HRESULT ( STDMETHODCALLTYPE *GetSupportedFunctions )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DM_SUPPORTED_FUNCTION **out_prgFuncs,
            /* [out] */ ULONG *out_cFuncs);
        
        HRESULT ( STDMETHODCALLTYPE *GetNumParameters )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ ULONG *out_pcParameters);
        
        HRESULT ( STDMETHODCALLTYPE *GetParameterName )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ DMString *io_pstrParameterName);
        
        HRESULT ( STDMETHODCALLTYPE *GetParameterType )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ DMString *io_pstrParameterType);
        
        HRESULT ( STDMETHODCALLTYPE *GetParameterIsRequired )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ BOOL *out_pfIsRequired);
        
        HRESULT ( STDMETHODCALLTYPE *GetParameterIsExposed )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ BOOL *out_pfIsExposed);
        
        HRESULT ( STDMETHODCALLTYPE *GetParameterFlags )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ ULONG *out_pulParameterFlags);
        
        HRESULT ( STDMETHODCALLTYPE *GetParameterDescription )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [in] */ ULONG in_LocaleID,
            /* [out] */ DMString *io_pstrDescription);
        
        HRESULT ( STDMETHODCALLTYPE *GetParameterDefaultValue )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ DMString *io_pstrDefaultValue);
        
        HRESULT ( STDMETHODCALLTYPE *GetParameterValueEnumeration )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ DMString *io_pstrValueEnumeration);
        
        HRESULT ( STDMETHODCALLTYPE *ParseParameterValue )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iParameter,
            /* [in] */ DMString *in_pstrParameterStrValue,
            /* [in] */ DMVariantPtr io_pParameterMappedValue);
        
        HRESULT ( STDMETHODCALLTYPE *GetMarginalRequirements )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ DMMarginalRequirements *out_pReq);
        
        HRESULT ( STDMETHODCALLTYPE *GetCaseIDModelled )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pfIsModelled);
        
        HRESULT ( STDMETHODCALLTYPE *ValidateAttributeSet )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ IDMAttributeSet *in_pAttributeSet);
        
        HRESULT ( STDMETHODCALLTYPE *GetSupportsPMML )( 
            IDMAlgorithmMetadata * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [out] */ BOOL *out_pfSupportsPMML);
        
        END_INTERFACE
    } IDMAlgorithmMetadataVtbl;

    interface IDMAlgorithmMetadata
    {
        CONST_VTBL struct IDMAlgorithmMetadataVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMAlgorithmMetadata_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMAlgorithmMetadata_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMAlgorithmMetadata_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMAlgorithmMetadata_GetServiceType(This,in_pContext,out_pServiceTypeID)	\
    ( (This)->lpVtbl -> GetServiceType(This,in_pContext,out_pServiceTypeID) ) 

#define IDMAlgorithmMetadata_GetServiceName(This,in_pContext,io_pstrServiceName)	\
    ( (This)->lpVtbl -> GetServiceName(This,in_pContext,io_pstrServiceName) ) 

#define IDMAlgorithmMetadata_GetDisplayName(This,in_pContext,io_pstrDisplayName)	\
    ( (This)->lpVtbl -> GetDisplayName(This,in_pContext,io_pstrDisplayName) ) 

#define IDMAlgorithmMetadata_GetServiceGuid(This,in_pContext,out_pguidServiceGUID)	\
    ( (This)->lpVtbl -> GetServiceGuid(This,in_pContext,out_pguidServiceGUID) ) 

#define IDMAlgorithmMetadata_GetDescription(This,in_pContext,io_pstrDescription)	\
    ( (This)->lpVtbl -> GetDescription(This,in_pContext,io_pstrDescription) ) 

#define IDMAlgorithmMetadata_GetPredictionLimit(This,in_pContext,out_pPredictionLimit)	\
    ( (This)->lpVtbl -> GetPredictionLimit(This,in_pContext,out_pPredictionLimit) ) 

#define IDMAlgorithmMetadata_GetSupDistributionFlags(This,in_pContext,out_prgFlags,out_cFlags)	\
    ( (This)->lpVtbl -> GetSupDistributionFlags(This,in_pContext,out_prgFlags,out_cFlags) ) 

#define IDMAlgorithmMetadata_GetSupInputContentTypes(This,in_pContext,out_prgTypes,out_cTypes)	\
    ( (This)->lpVtbl -> GetSupInputContentTypes(This,in_pContext,out_prgTypes,out_cTypes) ) 

#define IDMAlgorithmMetadata_GetSupPredictContentTypes(This,in_pContext,out_prgTypes,out_cTypes)	\
    ( (This)->lpVtbl -> GetSupPredictContentTypes(This,in_pContext,out_prgTypes,out_cTypes) ) 

#define IDMAlgorithmMetadata_GetSupModelingFlags(This,in_pContext,out_prgFlags,out_pcFlags)	\
    ( (This)->lpVtbl -> GetSupModelingFlags(This,in_pContext,out_prgFlags,out_pcFlags) ) 

#define IDMAlgorithmMetadata_GetModelingFlagName(This,in_pContext,in_Flag,io_pstrFlagName)	\
    ( (This)->lpVtbl -> GetModelingFlagName(This,in_pContext,in_Flag,io_pstrFlagName) ) 

#define IDMAlgorithmMetadata_GetTrainingComplexity(This,in_pContext,out_pTrainingComplexity)	\
    ( (This)->lpVtbl -> GetTrainingComplexity(This,in_pContext,out_pTrainingComplexity) ) 

#define IDMAlgorithmMetadata_GetPredictionComplexity(This,in_pContext,out_pPredictionComplexity)	\
    ( (This)->lpVtbl -> GetPredictionComplexity(This,in_pContext,out_pPredictionComplexity) ) 

#define IDMAlgorithmMetadata_GetExpectedQuality(This,in_pContext,out_pExpectedQuality)	\
    ( (This)->lpVtbl -> GetExpectedQuality(This,in_pContext,out_pExpectedQuality) ) 

#define IDMAlgorithmMetadata_GetScaling(This,in_pContext,out_pScaling)	\
    ( (This)->lpVtbl -> GetScaling(This,in_pContext,out_pScaling) ) 

#define IDMAlgorithmMetadata_GetAllowIncrementalInsert(This,in_pContext,out_pfIncrementalInsert)	\
    ( (This)->lpVtbl -> GetAllowIncrementalInsert(This,in_pContext,out_pfIncrementalInsert) ) 

#define IDMAlgorithmMetadata_GetAllowDuplicateKey(This,in_pContext,out_pfDuplicateKey)	\
    ( (This)->lpVtbl -> GetAllowDuplicateKey(This,in_pContext,out_pfDuplicateKey) ) 

#define IDMAlgorithmMetadata_GetControl(This,in_pContext,out_pControl)	\
    ( (This)->lpVtbl -> GetControl(This,in_pContext,out_pControl) ) 

#define IDMAlgorithmMetadata_GetViewerType(This,in_pContext,io_pstrViewerType)	\
    ( (This)->lpVtbl -> GetViewerType(This,in_pContext,io_pstrViewerType) ) 

#define IDMAlgorithmMetadata_GetSupportsDMDimensions(This,in_pContext,out_pfSupportsDMDimensions)	\
    ( (This)->lpVtbl -> GetSupportsDMDimensions(This,in_pContext,out_pfSupportsDMDimensions) ) 

#define IDMAlgorithmMetadata_GetSupportsDrillthrough(This,in_pContext,out_pfSupportsDrillthrough,out_pfMustIncludeChildren)	\
    ( (This)->lpVtbl -> GetSupportsDrillthrough(This,in_pContext,out_pfSupportsDrillthrough,out_pfMustIncludeChildren) ) 

#define IDMAlgorithmMetadata_GetSupportedFunctions(This,in_pContext,out_prgFuncs,out_cFuncs)	\
    ( (This)->lpVtbl -> GetSupportedFunctions(This,in_pContext,out_prgFuncs,out_cFuncs) ) 

#define IDMAlgorithmMetadata_GetNumParameters(This,in_pContext,out_pcParameters)	\
    ( (This)->lpVtbl -> GetNumParameters(This,in_pContext,out_pcParameters) ) 

#define IDMAlgorithmMetadata_GetParameterName(This,in_pContext,in_iParameter,io_pstrParameterName)	\
    ( (This)->lpVtbl -> GetParameterName(This,in_pContext,in_iParameter,io_pstrParameterName) ) 

#define IDMAlgorithmMetadata_GetParameterType(This,in_pContext,in_iParameter,io_pstrParameterType)	\
    ( (This)->lpVtbl -> GetParameterType(This,in_pContext,in_iParameter,io_pstrParameterType) ) 

#define IDMAlgorithmMetadata_GetParameterIsRequired(This,in_pContext,in_iParameter,out_pfIsRequired)	\
    ( (This)->lpVtbl -> GetParameterIsRequired(This,in_pContext,in_iParameter,out_pfIsRequired) ) 

#define IDMAlgorithmMetadata_GetParameterIsExposed(This,in_pContext,in_iParameter,out_pfIsExposed)	\
    ( (This)->lpVtbl -> GetParameterIsExposed(This,in_pContext,in_iParameter,out_pfIsExposed) ) 

#define IDMAlgorithmMetadata_GetParameterFlags(This,in_pContext,in_iParameter,out_pulParameterFlags)	\
    ( (This)->lpVtbl -> GetParameterFlags(This,in_pContext,in_iParameter,out_pulParameterFlags) ) 

#define IDMAlgorithmMetadata_GetParameterDescription(This,in_pContext,in_iParameter,in_LocaleID,io_pstrDescription)	\
    ( (This)->lpVtbl -> GetParameterDescription(This,in_pContext,in_iParameter,in_LocaleID,io_pstrDescription) ) 

#define IDMAlgorithmMetadata_GetParameterDefaultValue(This,in_pContext,in_iParameter,io_pstrDefaultValue)	\
    ( (This)->lpVtbl -> GetParameterDefaultValue(This,in_pContext,in_iParameter,io_pstrDefaultValue) ) 

#define IDMAlgorithmMetadata_GetParameterValueEnumeration(This,in_pContext,in_iParameter,io_pstrValueEnumeration)	\
    ( (This)->lpVtbl -> GetParameterValueEnumeration(This,in_pContext,in_iParameter,io_pstrValueEnumeration) ) 

#define IDMAlgorithmMetadata_ParseParameterValue(This,in_pContext,in_iParameter,in_pstrParameterStrValue,io_pParameterMappedValue)	\
    ( (This)->lpVtbl -> ParseParameterValue(This,in_pContext,in_iParameter,in_pstrParameterStrValue,io_pParameterMappedValue) ) 

#define IDMAlgorithmMetadata_GetMarginalRequirements(This,in_pContext,out_pReq)	\
    ( (This)->lpVtbl -> GetMarginalRequirements(This,in_pContext,out_pReq) ) 

#define IDMAlgorithmMetadata_GetCaseIDModelled(This,in_pContext,out_pfIsModelled)	\
    ( (This)->lpVtbl -> GetCaseIDModelled(This,in_pContext,out_pfIsModelled) ) 

#define IDMAlgorithmMetadata_ValidateAttributeSet(This,in_pContext,in_pAttributeSet)	\
    ( (This)->lpVtbl -> ValidateAttributeSet(This,in_pContext,in_pAttributeSet) ) 

#define IDMAlgorithmMetadata_GetSupportsPMML(This,in_pContext,out_pfSupportsPMML)	\
    ( (This)->lpVtbl -> GetSupportsPMML(This,in_pContext,out_pfSupportsPMML) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetServiceType_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ ULONG *out_pServiceTypeID);


void __RPC_STUB IDMAlgorithmMetadata_GetServiceType_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetServiceName_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ DMString *io_pstrServiceName);


void __RPC_STUB IDMAlgorithmMetadata_GetServiceName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetDisplayName_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ DMString *io_pstrDisplayName);


void __RPC_STUB IDMAlgorithmMetadata_GetDisplayName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetServiceGuid_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ GUID *out_pguidServiceGUID);


void __RPC_STUB IDMAlgorithmMetadata_GetServiceGuid_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetDescription_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ DMString *io_pstrDescription);


void __RPC_STUB IDMAlgorithmMetadata_GetDescription_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetPredictionLimit_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ LONG *out_pPredictionLimit);


void __RPC_STUB IDMAlgorithmMetadata_GetPredictionLimit_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetSupDistributionFlags_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ ULONG **out_prgFlags,
    /* [out] */ ULONG *out_cFlags);


void __RPC_STUB IDMAlgorithmMetadata_GetSupDistributionFlags_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetSupInputContentTypes_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ ULONG **out_prgTypes,
    /* [out] */ ULONG *out_cTypes);


void __RPC_STUB IDMAlgorithmMetadata_GetSupInputContentTypes_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetSupPredictContentTypes_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ ULONG **out_prgTypes,
    /* [out] */ ULONG *out_cTypes);


void __RPC_STUB IDMAlgorithmMetadata_GetSupPredictContentTypes_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetSupModelingFlags_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ DM_MODELING_FLAG **out_prgFlags,
    /* [out] */ ULONG *out_pcFlags);


void __RPC_STUB IDMAlgorithmMetadata_GetSupModelingFlags_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetModelingFlagName_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_MODELING_FLAG in_Flag,
    /* [in] */ DMString *io_pstrFlagName);


void __RPC_STUB IDMAlgorithmMetadata_GetModelingFlagName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetTrainingComplexity_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ LONG *out_pTrainingComplexity);


void __RPC_STUB IDMAlgorithmMetadata_GetTrainingComplexity_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetPredictionComplexity_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ LONG *out_pPredictionComplexity);


void __RPC_STUB IDMAlgorithmMetadata_GetPredictionComplexity_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetExpectedQuality_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ LONG *out_pExpectedQuality);


void __RPC_STUB IDMAlgorithmMetadata_GetExpectedQuality_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetScaling_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ LONG *out_pScaling);


void __RPC_STUB IDMAlgorithmMetadata_GetScaling_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetAllowIncrementalInsert_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ BOOL *out_pfIncrementalInsert);


void __RPC_STUB IDMAlgorithmMetadata_GetAllowIncrementalInsert_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetAllowDuplicateKey_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ BOOL *out_pfDuplicateKey);


void __RPC_STUB IDMAlgorithmMetadata_GetAllowDuplicateKey_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetControl_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ LONG *out_pControl);


void __RPC_STUB IDMAlgorithmMetadata_GetControl_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetViewerType_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ DMString *io_pstrViewerType);


void __RPC_STUB IDMAlgorithmMetadata_GetViewerType_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetSupportsDMDimensions_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ BOOL *out_pfSupportsDMDimensions);


void __RPC_STUB IDMAlgorithmMetadata_GetSupportsDMDimensions_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetSupportsDrillthrough_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ BOOL *out_pfSupportsDrillthrough,
    /* [out] */ BOOL *out_pfMustIncludeChildren);


void __RPC_STUB IDMAlgorithmMetadata_GetSupportsDrillthrough_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetSupportedFunctions_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ DM_SUPPORTED_FUNCTION **out_prgFuncs,
    /* [out] */ ULONG *out_cFuncs);


void __RPC_STUB IDMAlgorithmMetadata_GetSupportedFunctions_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetNumParameters_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ ULONG *out_pcParameters);


void __RPC_STUB IDMAlgorithmMetadata_GetNumParameters_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetParameterName_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ULONG in_iParameter,
    /* [out] */ DMString *io_pstrParameterName);


void __RPC_STUB IDMAlgorithmMetadata_GetParameterName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetParameterType_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ULONG in_iParameter,
    /* [out] */ DMString *io_pstrParameterType);


void __RPC_STUB IDMAlgorithmMetadata_GetParameterType_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetParameterIsRequired_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ULONG in_iParameter,
    /* [out] */ BOOL *out_pfIsRequired);


void __RPC_STUB IDMAlgorithmMetadata_GetParameterIsRequired_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetParameterIsExposed_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ULONG in_iParameter,
    /* [out] */ BOOL *out_pfIsExposed);


void __RPC_STUB IDMAlgorithmMetadata_GetParameterIsExposed_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetParameterFlags_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ULONG in_iParameter,
    /* [out] */ ULONG *out_pulParameterFlags);


void __RPC_STUB IDMAlgorithmMetadata_GetParameterFlags_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetParameterDescription_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ULONG in_iParameter,
    /* [in] */ ULONG in_LocaleID,
    /* [out] */ DMString *io_pstrDescription);


void __RPC_STUB IDMAlgorithmMetadata_GetParameterDescription_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetParameterDefaultValue_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ULONG in_iParameter,
    /* [out] */ DMString *io_pstrDefaultValue);


void __RPC_STUB IDMAlgorithmMetadata_GetParameterDefaultValue_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetParameterValueEnumeration_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ULONG in_iParameter,
    /* [out] */ DMString *io_pstrValueEnumeration);


void __RPC_STUB IDMAlgorithmMetadata_GetParameterValueEnumeration_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_ParseParameterValue_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ULONG in_iParameter,
    /* [in] */ DMString *in_pstrParameterStrValue,
    /* [in] */ DMVariantPtr io_pParameterMappedValue);


void __RPC_STUB IDMAlgorithmMetadata_ParseParameterValue_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetMarginalRequirements_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ DMMarginalRequirements *out_pReq);


void __RPC_STUB IDMAlgorithmMetadata_GetMarginalRequirements_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetCaseIDModelled_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ BOOL *out_pfIsModelled);


void __RPC_STUB IDMAlgorithmMetadata_GetCaseIDModelled_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_ValidateAttributeSet_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ IDMAttributeSet *in_pAttributeSet);


void __RPC_STUB IDMAlgorithmMetadata_ValidateAttributeSet_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMAlgorithmMetadata_GetSupportsPMML_Proxy( 
    IDMAlgorithmMetadata * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [out] */ BOOL *out_pfSupportsPMML);


void __RPC_STUB IDMAlgorithmMetadata_GetSupportsPMML_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMAlgorithmMetadata_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_dmalgo_0223 */
/* [local] */ 


enum DM_FUNC_PARAM_TYPE_ENUM
    {	DMFPT_UNKNOWN	= 0,
	DMFPT_SCALAR_COLUMN_REF	= 1,
	DMFPT_TABLE_COLUMN_REF	= 2,
	DMFPT_CONST_EXPRESSION	= 3
    } ;
typedef LONG DM_FUNC_PARAM_TYPE;



extern RPC_IF_HANDLE __MIDL_itf_dmalgo_0223_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_dmalgo_0223_v0_0_s_ifspec;

#ifndef __IDMCustomFunctionInfo_INTERFACE_DEFINED__
#define __IDMCustomFunctionInfo_INTERFACE_DEFINED__

/* interface IDMCustomFunctionInfo */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMCustomFunctionInfo;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("2FF40BAF-AAAD-4a67-91AC-B0D70A9EEFA0")
    IDMCustomFunctionInfo : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetName( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ DMString *io_pstrName) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetSignature( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ DMString *io_pstrSignature) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetReturnsTable( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ BOOL *out_pfReturnsTable) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDescription( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ DMString *io_pstrDescription) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetHelpFile( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ DMString *io_pstrHelpFile) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetHelpContext( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ LONG *io_pHelpContext) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNumParameters( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ ULONG *out_pcParameters) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetNumFlags( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ ULONG *out_pcFlags) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParameterType( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ DM_FUNC_PARAM_TYPE *out_pType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParameterDataType( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ VARTYPE *out_pDataType) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetParameterIsRequired( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ BOOL *out_pfIsRequired) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetFlagName( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [in] */ ULONG in_iFlag,
            /* [out] */ DMString *io_pstrName) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMCustomFunctionInfoVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMCustomFunctionInfo * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMCustomFunctionInfo * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMCustomFunctionInfo * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetName )( 
            IDMCustomFunctionInfo * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ DMString *io_pstrName);
        
        HRESULT ( STDMETHODCALLTYPE *GetSignature )( 
            IDMCustomFunctionInfo * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ DMString *io_pstrSignature);
        
        HRESULT ( STDMETHODCALLTYPE *GetReturnsTable )( 
            IDMCustomFunctionInfo * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ BOOL *out_pfReturnsTable);
        
        HRESULT ( STDMETHODCALLTYPE *GetDescription )( 
            IDMCustomFunctionInfo * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ DMString *io_pstrDescription);
        
        HRESULT ( STDMETHODCALLTYPE *GetHelpFile )( 
            IDMCustomFunctionInfo * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ DMString *io_pstrHelpFile);
        
        HRESULT ( STDMETHODCALLTYPE *GetHelpContext )( 
            IDMCustomFunctionInfo * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ LONG *io_pHelpContext);
        
        HRESULT ( STDMETHODCALLTYPE *GetNumParameters )( 
            IDMCustomFunctionInfo * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ ULONG *out_pcParameters);
        
        HRESULT ( STDMETHODCALLTYPE *GetNumFlags )( 
            IDMCustomFunctionInfo * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [out] */ ULONG *out_pcFlags);
        
        HRESULT ( STDMETHODCALLTYPE *GetParameterType )( 
            IDMCustomFunctionInfo * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ DM_FUNC_PARAM_TYPE *out_pType);
        
        HRESULT ( STDMETHODCALLTYPE *GetParameterDataType )( 
            IDMCustomFunctionInfo * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ VARTYPE *out_pDataType);
        
        HRESULT ( STDMETHODCALLTYPE *GetParameterIsRequired )( 
            IDMCustomFunctionInfo * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [in] */ ULONG in_iParameter,
            /* [out] */ BOOL *out_pfIsRequired);
        
        HRESULT ( STDMETHODCALLTYPE *GetFlagName )( 
            IDMCustomFunctionInfo * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [in] */ ULONG in_iFlag,
            /* [out] */ DMString *io_pstrName);
        
        END_INTERFACE
    } IDMCustomFunctionInfoVtbl;

    interface IDMCustomFunctionInfo
    {
        CONST_VTBL struct IDMCustomFunctionInfoVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMCustomFunctionInfo_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMCustomFunctionInfo_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMCustomFunctionInfo_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMCustomFunctionInfo_GetName(This,in_pContext,in_Function,io_pstrName)	\
    ( (This)->lpVtbl -> GetName(This,in_pContext,in_Function,io_pstrName) ) 

#define IDMCustomFunctionInfo_GetSignature(This,in_pContext,in_Function,io_pstrSignature)	\
    ( (This)->lpVtbl -> GetSignature(This,in_pContext,in_Function,io_pstrSignature) ) 

#define IDMCustomFunctionInfo_GetReturnsTable(This,in_pContext,in_Function,out_pfReturnsTable)	\
    ( (This)->lpVtbl -> GetReturnsTable(This,in_pContext,in_Function,out_pfReturnsTable) ) 

#define IDMCustomFunctionInfo_GetDescription(This,in_pContext,in_Function,io_pstrDescription)	\
    ( (This)->lpVtbl -> GetDescription(This,in_pContext,in_Function,io_pstrDescription) ) 

#define IDMCustomFunctionInfo_GetHelpFile(This,in_pContext,in_Function,io_pstrHelpFile)	\
    ( (This)->lpVtbl -> GetHelpFile(This,in_pContext,in_Function,io_pstrHelpFile) ) 

#define IDMCustomFunctionInfo_GetHelpContext(This,in_pContext,in_Function,io_pHelpContext)	\
    ( (This)->lpVtbl -> GetHelpContext(This,in_pContext,in_Function,io_pHelpContext) ) 

#define IDMCustomFunctionInfo_GetNumParameters(This,in_pContext,in_Function,out_pcParameters)	\
    ( (This)->lpVtbl -> GetNumParameters(This,in_pContext,in_Function,out_pcParameters) ) 

#define IDMCustomFunctionInfo_GetNumFlags(This,in_pContext,in_Function,out_pcFlags)	\
    ( (This)->lpVtbl -> GetNumFlags(This,in_pContext,in_Function,out_pcFlags) ) 

#define IDMCustomFunctionInfo_GetParameterType(This,in_pContext,in_Function,in_iParameter,out_pType)	\
    ( (This)->lpVtbl -> GetParameterType(This,in_pContext,in_Function,in_iParameter,out_pType) ) 

#define IDMCustomFunctionInfo_GetParameterDataType(This,in_pContext,in_Function,in_iParameter,out_pDataType)	\
    ( (This)->lpVtbl -> GetParameterDataType(This,in_pContext,in_Function,in_iParameter,out_pDataType) ) 

#define IDMCustomFunctionInfo_GetParameterIsRequired(This,in_pContext,in_Function,in_iParameter,out_pfIsRequired)	\
    ( (This)->lpVtbl -> GetParameterIsRequired(This,in_pContext,in_Function,in_iParameter,out_pfIsRequired) ) 

#define IDMCustomFunctionInfo_GetFlagName(This,in_pContext,in_Function,in_iFlag,io_pstrName)	\
    ( (This)->lpVtbl -> GetFlagName(This,in_pContext,in_Function,in_iFlag,io_pstrName) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMCustomFunctionInfo_GetName_Proxy( 
    IDMCustomFunctionInfo * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [out] */ DMString *io_pstrName);


void __RPC_STUB IDMCustomFunctionInfo_GetName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMCustomFunctionInfo_GetSignature_Proxy( 
    IDMCustomFunctionInfo * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [out] */ DMString *io_pstrSignature);


void __RPC_STUB IDMCustomFunctionInfo_GetSignature_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMCustomFunctionInfo_GetReturnsTable_Proxy( 
    IDMCustomFunctionInfo * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [out] */ BOOL *out_pfReturnsTable);


void __RPC_STUB IDMCustomFunctionInfo_GetReturnsTable_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMCustomFunctionInfo_GetDescription_Proxy( 
    IDMCustomFunctionInfo * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [out] */ DMString *io_pstrDescription);


void __RPC_STUB IDMCustomFunctionInfo_GetDescription_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMCustomFunctionInfo_GetHelpFile_Proxy( 
    IDMCustomFunctionInfo * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [out] */ DMString *io_pstrHelpFile);


void __RPC_STUB IDMCustomFunctionInfo_GetHelpFile_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMCustomFunctionInfo_GetHelpContext_Proxy( 
    IDMCustomFunctionInfo * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [out] */ LONG *io_pHelpContext);


void __RPC_STUB IDMCustomFunctionInfo_GetHelpContext_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMCustomFunctionInfo_GetNumParameters_Proxy( 
    IDMCustomFunctionInfo * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [out] */ ULONG *out_pcParameters);


void __RPC_STUB IDMCustomFunctionInfo_GetNumParameters_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMCustomFunctionInfo_GetNumFlags_Proxy( 
    IDMCustomFunctionInfo * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [out] */ ULONG *out_pcFlags);


void __RPC_STUB IDMCustomFunctionInfo_GetNumFlags_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMCustomFunctionInfo_GetParameterType_Proxy( 
    IDMCustomFunctionInfo * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [in] */ ULONG in_iParameter,
    /* [out] */ DM_FUNC_PARAM_TYPE *out_pType);


void __RPC_STUB IDMCustomFunctionInfo_GetParameterType_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMCustomFunctionInfo_GetParameterDataType_Proxy( 
    IDMCustomFunctionInfo * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [in] */ ULONG in_iParameter,
    /* [out] */ VARTYPE *out_pDataType);


void __RPC_STUB IDMCustomFunctionInfo_GetParameterDataType_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMCustomFunctionInfo_GetParameterIsRequired_Proxy( 
    IDMCustomFunctionInfo * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [in] */ ULONG in_iParameter,
    /* [out] */ BOOL *out_pfIsRequired);


void __RPC_STUB IDMCustomFunctionInfo_GetParameterIsRequired_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMCustomFunctionInfo_GetFlagName_Proxy( 
    IDMCustomFunctionInfo * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [in] */ ULONG in_iFlag,
    /* [out] */ DMString *io_pstrName);


void __RPC_STUB IDMCustomFunctionInfo_GetFlagName_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMCustomFunctionInfo_INTERFACE_DEFINED__ */


#ifndef __IDMDispatch_INTERFACE_DEFINED__
#define __IDMDispatch_INTERFACE_DEFINED__

/* interface IDMDispatch */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMDispatch;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("81C85EBE-1504-4e00-93E4-7DE82828FB2C")
    IDMDispatch : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE PrepareFunction( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [in] */ ULONG in_ulFlags,
            /* [in] */ ULONG *in_rgFlags,
            /* [in] */ ULONG in_ulParams,
            /* [in] */ DMVariantPtr *in_rgParams,
            /* [out] */ DM_COLUMN_INFO **io_prgColumnInfo,
            /* [out] */ ULONG *out_pulColumnInfo) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE InvokeFunction( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [in] */ DM_CaseID in_CaseID,
            /* [in] */ ULONG in_ulCaseValues,
            /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
            /* [in] */ ULONG in_ulFlags,
            /* [in] */ ULONG *in_rgFlags,
            /* [in] */ ULONG in_ulParams,
            /* [in] */ DMVariantPtr *in_rgParams,
            /* [in] */ DMVariantPtr io_pResult) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMDispatchVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMDispatch * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMDispatch * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMDispatch * This);
        
        HRESULT ( STDMETHODCALLTYPE *PrepareFunction )( 
            IDMDispatch * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [in] */ ULONG in_ulFlags,
            /* [in] */ ULONG *in_rgFlags,
            /* [in] */ ULONG in_ulParams,
            /* [in] */ DMVariantPtr *in_rgParams,
            /* [out] */ DM_COLUMN_INFO **io_prgColumnInfo,
            /* [out] */ ULONG *out_pulColumnInfo);
        
        HRESULT ( STDMETHODCALLTYPE *InvokeFunction )( 
            IDMDispatch * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
            /* [in] */ DM_CaseID in_CaseID,
            /* [in] */ ULONG in_ulCaseValues,
            /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
            /* [in] */ ULONG in_ulFlags,
            /* [in] */ ULONG *in_rgFlags,
            /* [in] */ ULONG in_ulParams,
            /* [in] */ DMVariantPtr *in_rgParams,
            /* [in] */ DMVariantPtr io_pResult);
        
        END_INTERFACE
    } IDMDispatchVtbl;

    interface IDMDispatch
    {
        CONST_VTBL struct IDMDispatchVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMDispatch_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMDispatch_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMDispatch_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMDispatch_PrepareFunction(This,in_pContext,in_Function,in_ulFlags,in_rgFlags,in_ulParams,in_rgParams,io_prgColumnInfo,out_pulColumnInfo)	\
    ( (This)->lpVtbl -> PrepareFunction(This,in_pContext,in_Function,in_ulFlags,in_rgFlags,in_ulParams,in_rgParams,io_prgColumnInfo,out_pulColumnInfo) ) 

#define IDMDispatch_InvokeFunction(This,in_pContext,in_Function,in_CaseID,in_ulCaseValues,in_rgValues,in_ulFlags,in_rgFlags,in_ulParams,in_rgParams,io_pResult)	\
    ( (This)->lpVtbl -> InvokeFunction(This,in_pContext,in_Function,in_CaseID,in_ulCaseValues,in_rgValues,in_ulFlags,in_rgFlags,in_ulParams,in_rgParams,io_pResult) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMDispatch_PrepareFunction_Proxy( 
    IDMDispatch * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [in] */ ULONG in_ulFlags,
    /* [in] */ ULONG *in_rgFlags,
    /* [in] */ ULONG in_ulParams,
    /* [in] */ DMVariantPtr *in_rgParams,
    /* [out] */ DM_COLUMN_INFO **io_prgColumnInfo,
    /* [out] */ ULONG *out_pulColumnInfo);


void __RPC_STUB IDMDispatch_PrepareFunction_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMDispatch_InvokeFunction_Proxy( 
    IDMDispatch * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ DM_SUPPORTED_FUNCTION in_Function,
    /* [in] */ DM_CaseID in_CaseID,
    /* [in] */ ULONG in_ulCaseValues,
    /* [in] */ DM_ATTRIBUTE_VALUE *in_rgValues,
    /* [in] */ ULONG in_ulFlags,
    /* [in] */ ULONG *in_rgFlags,
    /* [in] */ ULONG in_ulParams,
    /* [in] */ DMVariantPtr *in_rgParams,
    /* [in] */ DMVariantPtr io_pResult);


void __RPC_STUB IDMDispatch_InvokeFunction_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMDispatch_INTERFACE_DEFINED__ */


#ifndef __IDMTableResult_INTERFACE_DEFINED__
#define __IDMTableResult_INTERFACE_DEFINED__

/* interface IDMTableResult */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMTableResult;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("23A9D454-5B2C-4862-963F-A72231D1F58E")
    IDMTableResult : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetColumnCount( 
            /* [out] */ ULONG *out_pcColumns) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Start( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE MoveToNextRow( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetColumnValue( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iColumn,
            /* [in] */ DMVariantPtr io_pColumnValue) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMTableResultVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMTableResult * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMTableResult * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMTableResult * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetColumnCount )( 
            IDMTableResult * This,
            /* [out] */ ULONG *out_pcColumns);
        
        HRESULT ( STDMETHODCALLTYPE *Start )( 
            IDMTableResult * This);
        
        HRESULT ( STDMETHODCALLTYPE *MoveToNextRow )( 
            IDMTableResult * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetColumnValue )( 
            IDMTableResult * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ ULONG in_iColumn,
            /* [in] */ DMVariantPtr io_pColumnValue);
        
        END_INTERFACE
    } IDMTableResultVtbl;

    interface IDMTableResult
    {
        CONST_VTBL struct IDMTableResultVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMTableResult_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMTableResult_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMTableResult_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMTableResult_GetColumnCount(This,out_pcColumns)	\
    ( (This)->lpVtbl -> GetColumnCount(This,out_pcColumns) ) 

#define IDMTableResult_Start(This)	\
    ( (This)->lpVtbl -> Start(This) ) 

#define IDMTableResult_MoveToNextRow(This)	\
    ( (This)->lpVtbl -> MoveToNextRow(This) ) 

#define IDMTableResult_GetColumnValue(This,in_pContext,in_iColumn,io_pColumnValue)	\
    ( (This)->lpVtbl -> GetColumnValue(This,in_pContext,in_iColumn,io_pColumnValue) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMTableResult_GetColumnCount_Proxy( 
    IDMTableResult * This,
    /* [out] */ ULONG *out_pcColumns);


void __RPC_STUB IDMTableResult_GetColumnCount_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMTableResult_Start_Proxy( 
    IDMTableResult * This);


void __RPC_STUB IDMTableResult_Start_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMTableResult_MoveToNextRow_Proxy( 
    IDMTableResult * This);


void __RPC_STUB IDMTableResult_MoveToNextRow_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMTableResult_GetColumnValue_Proxy( 
    IDMTableResult * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ ULONG in_iColumn,
    /* [in] */ DMVariantPtr io_pColumnValue);


void __RPC_STUB IDMTableResult_GetColumnValue_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMTableResult_INTERFACE_DEFINED__ */


/* interface __MIDL_itf_dmalgo_0226 */
/* [local] */ 


enum DM_PERSIST_ITEM_ENUM
    {	DMPI_NONE	= -2,
	DMPI_INVALID	= -1,
	DMPI_BASE	= 0,
	DMPI_UNKNOWN	= 0,
	DMPI_END_SCOPE	= 1,
	DMPI_MODEL	= 2,
	DMPI_MARGINALMODEL	= 3,
	DMPI_ALGORITHMCONTENT	= 4,
	DMPI_ALGORITHM_PARAMETERS	= 100,
	DMPI_ALGORITHMSPECIFIC_BASE	= 1000
    } ;
typedef LONG DM_PERSIST_ITEM;



extern RPC_IF_HANDLE __MIDL_itf_dmalgo_0226_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_dmalgo_0226_v0_0_s_ifspec;

#ifndef __IDMPersistenceWriter_INTERFACE_DEFINED__
#define __IDMPersistenceWriter_INTERFACE_DEFINED__

/* interface IDMPersistenceWriter */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMPersistenceWriter;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("283FDD80-3161-453b-A75B-6803A275DC50")
    IDMPersistenceWriter : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE OpenScope( 
            /* [in] */ DM_PERSIST_ITEM in_wTag) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CloseScope( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE StartCollection( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ ULONG in_cItems) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EndCollection( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetBoolAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ BOOL in_fVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetDoubleAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ DOUBLE in_dblVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetShortAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ short in_sVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetLongAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ long in_lVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetULongAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ ULONG in_ulVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetStringAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ WCHAR *in_pstrVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetVariantAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ VARIANT *in_pvarVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetDateAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ double in_dateVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetBool( 
            BOOL in_fVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetDouble( 
            DOUBLE in_dblVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetShort( 
            short in_sVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetLong( 
            long in_lVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetULong( 
            ULONG in_ulVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetString( 
            WCHAR *in_pstrVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetVariant( 
            VARIANT *in_pvarVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE SetDate( 
            double in_dateVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMPersistenceWriterVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMPersistenceWriter * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMPersistenceWriter * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMPersistenceWriter * This);
        
        HRESULT ( STDMETHODCALLTYPE *OpenScope )( 
            IDMPersistenceWriter * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag);
        
        HRESULT ( STDMETHODCALLTYPE *CloseScope )( 
            IDMPersistenceWriter * This);
        
        HRESULT ( STDMETHODCALLTYPE *StartCollection )( 
            IDMPersistenceWriter * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ ULONG in_cItems);
        
        HRESULT ( STDMETHODCALLTYPE *EndCollection )( 
            IDMPersistenceWriter * This);
        
        HRESULT ( STDMETHODCALLTYPE *SetBoolAttribute )( 
            IDMPersistenceWriter * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ BOOL in_fVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetDoubleAttribute )( 
            IDMPersistenceWriter * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ DOUBLE in_dblVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetShortAttribute )( 
            IDMPersistenceWriter * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ short in_sVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetLongAttribute )( 
            IDMPersistenceWriter * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ long in_lVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetULongAttribute )( 
            IDMPersistenceWriter * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ ULONG in_ulVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetStringAttribute )( 
            IDMPersistenceWriter * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ WCHAR *in_pstrVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetVariantAttribute )( 
            IDMPersistenceWriter * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ VARIANT *in_pvarVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetDateAttribute )( 
            IDMPersistenceWriter * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ double in_dateVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetBool )( 
            IDMPersistenceWriter * This,
            BOOL in_fVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetDouble )( 
            IDMPersistenceWriter * This,
            DOUBLE in_dblVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetShort )( 
            IDMPersistenceWriter * This,
            short in_sVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetLong )( 
            IDMPersistenceWriter * This,
            long in_lVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetULong )( 
            IDMPersistenceWriter * This,
            ULONG in_ulVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetString )( 
            IDMPersistenceWriter * This,
            WCHAR *in_pstrVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetVariant )( 
            IDMPersistenceWriter * This,
            VARIANT *in_pvarVal);
        
        HRESULT ( STDMETHODCALLTYPE *SetDate )( 
            IDMPersistenceWriter * This,
            double in_dateVal);
        
        END_INTERFACE
    } IDMPersistenceWriterVtbl;

    interface IDMPersistenceWriter
    {
        CONST_VTBL struct IDMPersistenceWriterVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMPersistenceWriter_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMPersistenceWriter_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMPersistenceWriter_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMPersistenceWriter_OpenScope(This,in_wTag)	\
    ( (This)->lpVtbl -> OpenScope(This,in_wTag) ) 

#define IDMPersistenceWriter_CloseScope(This)	\
    ( (This)->lpVtbl -> CloseScope(This) ) 

#define IDMPersistenceWriter_StartCollection(This,in_wTag,in_cItems)	\
    ( (This)->lpVtbl -> StartCollection(This,in_wTag,in_cItems) ) 

#define IDMPersistenceWriter_EndCollection(This)	\
    ( (This)->lpVtbl -> EndCollection(This) ) 

#define IDMPersistenceWriter_SetBoolAttribute(This,in_wTag,in_fVal)	\
    ( (This)->lpVtbl -> SetBoolAttribute(This,in_wTag,in_fVal) ) 

#define IDMPersistenceWriter_SetDoubleAttribute(This,in_wTag,in_dblVal)	\
    ( (This)->lpVtbl -> SetDoubleAttribute(This,in_wTag,in_dblVal) ) 

#define IDMPersistenceWriter_SetShortAttribute(This,in_wTag,in_sVal)	\
    ( (This)->lpVtbl -> SetShortAttribute(This,in_wTag,in_sVal) ) 

#define IDMPersistenceWriter_SetLongAttribute(This,in_wTag,in_lVal)	\
    ( (This)->lpVtbl -> SetLongAttribute(This,in_wTag,in_lVal) ) 

#define IDMPersistenceWriter_SetULongAttribute(This,in_wTag,in_ulVal)	\
    ( (This)->lpVtbl -> SetULongAttribute(This,in_wTag,in_ulVal) ) 

#define IDMPersistenceWriter_SetStringAttribute(This,in_wTag,in_pstrVal)	\
    ( (This)->lpVtbl -> SetStringAttribute(This,in_wTag,in_pstrVal) ) 

#define IDMPersistenceWriter_SetVariantAttribute(This,in_wTag,in_pvarVal)	\
    ( (This)->lpVtbl -> SetVariantAttribute(This,in_wTag,in_pvarVal) ) 

#define IDMPersistenceWriter_SetDateAttribute(This,in_wTag,in_dateVal)	\
    ( (This)->lpVtbl -> SetDateAttribute(This,in_wTag,in_dateVal) ) 

#define IDMPersistenceWriter_SetBool(This,in_fVal)	\
    ( (This)->lpVtbl -> SetBool(This,in_fVal) ) 

#define IDMPersistenceWriter_SetDouble(This,in_dblVal)	\
    ( (This)->lpVtbl -> SetDouble(This,in_dblVal) ) 

#define IDMPersistenceWriter_SetShort(This,in_sVal)	\
    ( (This)->lpVtbl -> SetShort(This,in_sVal) ) 

#define IDMPersistenceWriter_SetLong(This,in_lVal)	\
    ( (This)->lpVtbl -> SetLong(This,in_lVal) ) 

#define IDMPersistenceWriter_SetULong(This,in_ulVal)	\
    ( (This)->lpVtbl -> SetULong(This,in_ulVal) ) 

#define IDMPersistenceWriter_SetString(This,in_pstrVal)	\
    ( (This)->lpVtbl -> SetString(This,in_pstrVal) ) 

#define IDMPersistenceWriter_SetVariant(This,in_pvarVal)	\
    ( (This)->lpVtbl -> SetVariant(This,in_pvarVal) ) 

#define IDMPersistenceWriter_SetDate(This,in_dateVal)	\
    ( (This)->lpVtbl -> SetDate(This,in_dateVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_OpenScope_Proxy( 
    IDMPersistenceWriter * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag);


void __RPC_STUB IDMPersistenceWriter_OpenScope_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_CloseScope_Proxy( 
    IDMPersistenceWriter * This);


void __RPC_STUB IDMPersistenceWriter_CloseScope_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_StartCollection_Proxy( 
    IDMPersistenceWriter * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [in] */ ULONG in_cItems);


void __RPC_STUB IDMPersistenceWriter_StartCollection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_EndCollection_Proxy( 
    IDMPersistenceWriter * This);


void __RPC_STUB IDMPersistenceWriter_EndCollection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetBoolAttribute_Proxy( 
    IDMPersistenceWriter * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [in] */ BOOL in_fVal);


void __RPC_STUB IDMPersistenceWriter_SetBoolAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetDoubleAttribute_Proxy( 
    IDMPersistenceWriter * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [in] */ DOUBLE in_dblVal);


void __RPC_STUB IDMPersistenceWriter_SetDoubleAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetShortAttribute_Proxy( 
    IDMPersistenceWriter * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [in] */ short in_sVal);


void __RPC_STUB IDMPersistenceWriter_SetShortAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetLongAttribute_Proxy( 
    IDMPersistenceWriter * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [in] */ long in_lVal);


void __RPC_STUB IDMPersistenceWriter_SetLongAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetULongAttribute_Proxy( 
    IDMPersistenceWriter * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [in] */ ULONG in_ulVal);


void __RPC_STUB IDMPersistenceWriter_SetULongAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetStringAttribute_Proxy( 
    IDMPersistenceWriter * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [in] */ WCHAR *in_pstrVal);


void __RPC_STUB IDMPersistenceWriter_SetStringAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetVariantAttribute_Proxy( 
    IDMPersistenceWriter * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [in] */ VARIANT *in_pvarVal);


void __RPC_STUB IDMPersistenceWriter_SetVariantAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetDateAttribute_Proxy( 
    IDMPersistenceWriter * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [in] */ double in_dateVal);


void __RPC_STUB IDMPersistenceWriter_SetDateAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetBool_Proxy( 
    IDMPersistenceWriter * This,
    BOOL in_fVal);


void __RPC_STUB IDMPersistenceWriter_SetBool_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetDouble_Proxy( 
    IDMPersistenceWriter * This,
    DOUBLE in_dblVal);


void __RPC_STUB IDMPersistenceWriter_SetDouble_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetShort_Proxy( 
    IDMPersistenceWriter * This,
    short in_sVal);


void __RPC_STUB IDMPersistenceWriter_SetShort_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetLong_Proxy( 
    IDMPersistenceWriter * This,
    long in_lVal);


void __RPC_STUB IDMPersistenceWriter_SetLong_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetULong_Proxy( 
    IDMPersistenceWriter * This,
    ULONG in_ulVal);


void __RPC_STUB IDMPersistenceWriter_SetULong_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetString_Proxy( 
    IDMPersistenceWriter * This,
    WCHAR *in_pstrVal);


void __RPC_STUB IDMPersistenceWriter_SetString_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetVariant_Proxy( 
    IDMPersistenceWriter * This,
    VARIANT *in_pvarVal);


void __RPC_STUB IDMPersistenceWriter_SetVariant_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceWriter_SetDate_Proxy( 
    IDMPersistenceWriter * This,
    double in_dateVal);


void __RPC_STUB IDMPersistenceWriter_SetDate_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMPersistenceWriter_INTERFACE_DEFINED__ */


#ifndef __IDMPersistenceReader_INTERFACE_DEFINED__
#define __IDMPersistenceReader_INTERFACE_DEFINED__

/* interface IDMPersistenceReader */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMPersistenceReader;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("70189EB9-4106-4fe1-A574-F33ED6A3B245")
    IDMPersistenceReader : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetVersion( 
            /* [out] */ ULONG *out_pulVersion) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetTag( 
            DM_PERSIST_ITEM *out_pTag) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ReadCollection( 
            ULONG *out_pcItems) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE ReadScope( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE CloseScope( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetBool( 
            BOOL *out_fVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDouble( 
            DOUBLE *out_dblVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetShort( 
            short *out_sVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetLong( 
            long *out_lVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetULong( 
            ULONG *out_ulVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetString( 
            DMString *out_pstrVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetVariant( 
            IDMContextServices *out_pContext,
            DMVariantPtr io_pvarVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDate( 
            double *out_dateVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE OpenScope( 
            /* [in] */ DM_PERSIST_ITEM in_wTag) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE StartCollection( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ ULONG *out_pcItems) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE EndCollection( void) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetBoolAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ BOOL *out_fVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDoubleAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ DOUBLE *out_dblVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetShortAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ short *out_sVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetLongAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ long *out_lVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetULongAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ ULONG *out_ulVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetStringAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ DMString *out_pstrVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetVariantAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ IDMContextServices *out_pContext,
            /* [in] */ DMVariantPtr io_pvarVal) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE GetDateAttribute( 
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ double *out_dateVal) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMPersistenceReaderVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMPersistenceReader * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMPersistenceReader * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMPersistenceReader * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetVersion )( 
            IDMPersistenceReader * This,
            /* [out] */ ULONG *out_pulVersion);
        
        HRESULT ( STDMETHODCALLTYPE *GetTag )( 
            IDMPersistenceReader * This,
            DM_PERSIST_ITEM *out_pTag);
        
        HRESULT ( STDMETHODCALLTYPE *ReadCollection )( 
            IDMPersistenceReader * This,
            ULONG *out_pcItems);
        
        HRESULT ( STDMETHODCALLTYPE *ReadScope )( 
            IDMPersistenceReader * This);
        
        HRESULT ( STDMETHODCALLTYPE *CloseScope )( 
            IDMPersistenceReader * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetBool )( 
            IDMPersistenceReader * This,
            BOOL *out_fVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetDouble )( 
            IDMPersistenceReader * This,
            DOUBLE *out_dblVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetShort )( 
            IDMPersistenceReader * This,
            short *out_sVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetLong )( 
            IDMPersistenceReader * This,
            long *out_lVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetULong )( 
            IDMPersistenceReader * This,
            ULONG *out_ulVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetString )( 
            IDMPersistenceReader * This,
            DMString *out_pstrVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetVariant )( 
            IDMPersistenceReader * This,
            IDMContextServices *out_pContext,
            DMVariantPtr io_pvarVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetDate )( 
            IDMPersistenceReader * This,
            double *out_dateVal);
        
        HRESULT ( STDMETHODCALLTYPE *OpenScope )( 
            IDMPersistenceReader * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag);
        
        HRESULT ( STDMETHODCALLTYPE *StartCollection )( 
            IDMPersistenceReader * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ ULONG *out_pcItems);
        
        HRESULT ( STDMETHODCALLTYPE *EndCollection )( 
            IDMPersistenceReader * This);
        
        HRESULT ( STDMETHODCALLTYPE *GetBoolAttribute )( 
            IDMPersistenceReader * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ BOOL *out_fVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetDoubleAttribute )( 
            IDMPersistenceReader * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ DOUBLE *out_dblVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetShortAttribute )( 
            IDMPersistenceReader * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ short *out_sVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetLongAttribute )( 
            IDMPersistenceReader * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ long *out_lVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetULongAttribute )( 
            IDMPersistenceReader * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ ULONG *out_ulVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetStringAttribute )( 
            IDMPersistenceReader * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ DMString *out_pstrVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetVariantAttribute )( 
            IDMPersistenceReader * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [in] */ IDMContextServices *out_pContext,
            /* [in] */ DMVariantPtr io_pvarVal);
        
        HRESULT ( STDMETHODCALLTYPE *GetDateAttribute )( 
            IDMPersistenceReader * This,
            /* [in] */ DM_PERSIST_ITEM in_wTag,
            /* [out] */ double *out_dateVal);
        
        END_INTERFACE
    } IDMPersistenceReaderVtbl;

    interface IDMPersistenceReader
    {
        CONST_VTBL struct IDMPersistenceReaderVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMPersistenceReader_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMPersistenceReader_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMPersistenceReader_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMPersistenceReader_GetVersion(This,out_pulVersion)	\
    ( (This)->lpVtbl -> GetVersion(This,out_pulVersion) ) 

#define IDMPersistenceReader_GetTag(This,out_pTag)	\
    ( (This)->lpVtbl -> GetTag(This,out_pTag) ) 

#define IDMPersistenceReader_ReadCollection(This,out_pcItems)	\
    ( (This)->lpVtbl -> ReadCollection(This,out_pcItems) ) 

#define IDMPersistenceReader_ReadScope(This)	\
    ( (This)->lpVtbl -> ReadScope(This) ) 

#define IDMPersistenceReader_CloseScope(This)	\
    ( (This)->lpVtbl -> CloseScope(This) ) 

#define IDMPersistenceReader_GetBool(This,out_fVal)	\
    ( (This)->lpVtbl -> GetBool(This,out_fVal) ) 

#define IDMPersistenceReader_GetDouble(This,out_dblVal)	\
    ( (This)->lpVtbl -> GetDouble(This,out_dblVal) ) 

#define IDMPersistenceReader_GetShort(This,out_sVal)	\
    ( (This)->lpVtbl -> GetShort(This,out_sVal) ) 

#define IDMPersistenceReader_GetLong(This,out_lVal)	\
    ( (This)->lpVtbl -> GetLong(This,out_lVal) ) 

#define IDMPersistenceReader_GetULong(This,out_ulVal)	\
    ( (This)->lpVtbl -> GetULong(This,out_ulVal) ) 

#define IDMPersistenceReader_GetString(This,out_pstrVal)	\
    ( (This)->lpVtbl -> GetString(This,out_pstrVal) ) 

#define IDMPersistenceReader_GetVariant(This,out_pContext,io_pvarVal)	\
    ( (This)->lpVtbl -> GetVariant(This,out_pContext,io_pvarVal) ) 

#define IDMPersistenceReader_GetDate(This,out_dateVal)	\
    ( (This)->lpVtbl -> GetDate(This,out_dateVal) ) 

#define IDMPersistenceReader_OpenScope(This,in_wTag)	\
    ( (This)->lpVtbl -> OpenScope(This,in_wTag) ) 

#define IDMPersistenceReader_StartCollection(This,in_wTag,out_pcItems)	\
    ( (This)->lpVtbl -> StartCollection(This,in_wTag,out_pcItems) ) 

#define IDMPersistenceReader_EndCollection(This)	\
    ( (This)->lpVtbl -> EndCollection(This) ) 

#define IDMPersistenceReader_GetBoolAttribute(This,in_wTag,out_fVal)	\
    ( (This)->lpVtbl -> GetBoolAttribute(This,in_wTag,out_fVal) ) 

#define IDMPersistenceReader_GetDoubleAttribute(This,in_wTag,out_dblVal)	\
    ( (This)->lpVtbl -> GetDoubleAttribute(This,in_wTag,out_dblVal) ) 

#define IDMPersistenceReader_GetShortAttribute(This,in_wTag,out_sVal)	\
    ( (This)->lpVtbl -> GetShortAttribute(This,in_wTag,out_sVal) ) 

#define IDMPersistenceReader_GetLongAttribute(This,in_wTag,out_lVal)	\
    ( (This)->lpVtbl -> GetLongAttribute(This,in_wTag,out_lVal) ) 

#define IDMPersistenceReader_GetULongAttribute(This,in_wTag,out_ulVal)	\
    ( (This)->lpVtbl -> GetULongAttribute(This,in_wTag,out_ulVal) ) 

#define IDMPersistenceReader_GetStringAttribute(This,in_wTag,out_pstrVal)	\
    ( (This)->lpVtbl -> GetStringAttribute(This,in_wTag,out_pstrVal) ) 

#define IDMPersistenceReader_GetVariantAttribute(This,in_wTag,out_pContext,io_pvarVal)	\
    ( (This)->lpVtbl -> GetVariantAttribute(This,in_wTag,out_pContext,io_pvarVal) ) 

#define IDMPersistenceReader_GetDateAttribute(This,in_wTag,out_dateVal)	\
    ( (This)->lpVtbl -> GetDateAttribute(This,in_wTag,out_dateVal) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetVersion_Proxy( 
    IDMPersistenceReader * This,
    /* [out] */ ULONG *out_pulVersion);


void __RPC_STUB IDMPersistenceReader_GetVersion_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetTag_Proxy( 
    IDMPersistenceReader * This,
    DM_PERSIST_ITEM *out_pTag);


void __RPC_STUB IDMPersistenceReader_GetTag_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_ReadCollection_Proxy( 
    IDMPersistenceReader * This,
    ULONG *out_pcItems);


void __RPC_STUB IDMPersistenceReader_ReadCollection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_ReadScope_Proxy( 
    IDMPersistenceReader * This);


void __RPC_STUB IDMPersistenceReader_ReadScope_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_CloseScope_Proxy( 
    IDMPersistenceReader * This);


void __RPC_STUB IDMPersistenceReader_CloseScope_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetBool_Proxy( 
    IDMPersistenceReader * This,
    BOOL *out_fVal);


void __RPC_STUB IDMPersistenceReader_GetBool_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetDouble_Proxy( 
    IDMPersistenceReader * This,
    DOUBLE *out_dblVal);


void __RPC_STUB IDMPersistenceReader_GetDouble_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetShort_Proxy( 
    IDMPersistenceReader * This,
    short *out_sVal);


void __RPC_STUB IDMPersistenceReader_GetShort_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetLong_Proxy( 
    IDMPersistenceReader * This,
    long *out_lVal);


void __RPC_STUB IDMPersistenceReader_GetLong_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetULong_Proxy( 
    IDMPersistenceReader * This,
    ULONG *out_ulVal);


void __RPC_STUB IDMPersistenceReader_GetULong_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetString_Proxy( 
    IDMPersistenceReader * This,
    DMString *out_pstrVal);


void __RPC_STUB IDMPersistenceReader_GetString_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetVariant_Proxy( 
    IDMPersistenceReader * This,
    IDMContextServices *out_pContext,
    DMVariantPtr io_pvarVal);


void __RPC_STUB IDMPersistenceReader_GetVariant_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetDate_Proxy( 
    IDMPersistenceReader * This,
    double *out_dateVal);


void __RPC_STUB IDMPersistenceReader_GetDate_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_OpenScope_Proxy( 
    IDMPersistenceReader * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag);


void __RPC_STUB IDMPersistenceReader_OpenScope_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_StartCollection_Proxy( 
    IDMPersistenceReader * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [out] */ ULONG *out_pcItems);


void __RPC_STUB IDMPersistenceReader_StartCollection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_EndCollection_Proxy( 
    IDMPersistenceReader * This);


void __RPC_STUB IDMPersistenceReader_EndCollection_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetBoolAttribute_Proxy( 
    IDMPersistenceReader * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [out] */ BOOL *out_fVal);


void __RPC_STUB IDMPersistenceReader_GetBoolAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetDoubleAttribute_Proxy( 
    IDMPersistenceReader * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [out] */ DOUBLE *out_dblVal);


void __RPC_STUB IDMPersistenceReader_GetDoubleAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetShortAttribute_Proxy( 
    IDMPersistenceReader * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [out] */ short *out_sVal);


void __RPC_STUB IDMPersistenceReader_GetShortAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetLongAttribute_Proxy( 
    IDMPersistenceReader * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [out] */ long *out_lVal);


void __RPC_STUB IDMPersistenceReader_GetLongAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetULongAttribute_Proxy( 
    IDMPersistenceReader * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [out] */ ULONG *out_ulVal);


void __RPC_STUB IDMPersistenceReader_GetULongAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetStringAttribute_Proxy( 
    IDMPersistenceReader * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [out] */ DMString *out_pstrVal);


void __RPC_STUB IDMPersistenceReader_GetStringAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetVariantAttribute_Proxy( 
    IDMPersistenceReader * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [in] */ IDMContextServices *out_pContext,
    /* [in] */ DMVariantPtr io_pvarVal);


void __RPC_STUB IDMPersistenceReader_GetVariantAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersistenceReader_GetDateAttribute_Proxy( 
    IDMPersistenceReader * This,
    /* [in] */ DM_PERSIST_ITEM in_wTag,
    /* [out] */ double *out_dateVal);


void __RPC_STUB IDMPersistenceReader_GetDateAttribute_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMPersistenceReader_INTERFACE_DEFINED__ */


#ifndef __IDMPersist_INTERFACE_DEFINED__
#define __IDMPersist_INTERFACE_DEFINED__

/* interface IDMPersist */
/* [object][local][uuid] */ 


EXTERN_C const IID IID_IDMPersist;

#if defined(__cplusplus) && !defined(CINTERFACE)
    
    MIDL_INTERFACE("CF22ECB5-25B3-4ffa-8FE0-224B0BB03281")
    IDMPersist : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Load( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ IDMPersistenceReader *in_pReader) = 0;
        
        virtual HRESULT STDMETHODCALLTYPE Save( 
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ IDMPersistenceWriter *in_pWriter) = 0;
        
    };
    
#else 	/* C style interface */

    typedef struct IDMPersistVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IDMPersist * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ void **ppvObject);
        
        ULONG ( STDMETHODCALLTYPE *AddRef )( 
            IDMPersist * This);
        
        ULONG ( STDMETHODCALLTYPE *Release )( 
            IDMPersist * This);
        
        HRESULT ( STDMETHODCALLTYPE *Load )( 
            IDMPersist * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ IDMPersistenceReader *in_pReader);
        
        HRESULT ( STDMETHODCALLTYPE *Save )( 
            IDMPersist * This,
            /* [in] */ IDMContextServices *in_pContext,
            /* [in] */ IDMPersistenceWriter *in_pWriter);
        
        END_INTERFACE
    } IDMPersistVtbl;

    interface IDMPersist
    {
        CONST_VTBL struct IDMPersistVtbl *lpVtbl;
    };

    

#ifdef COBJMACROS


#define IDMPersist_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 

#define IDMPersist_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) ) 

#define IDMPersist_Release(This)	\
    ( (This)->lpVtbl -> Release(This) ) 


#define IDMPersist_Load(This,in_pContext,in_pReader)	\
    ( (This)->lpVtbl -> Load(This,in_pContext,in_pReader) ) 

#define IDMPersist_Save(This,in_pContext,in_pWriter)	\
    ( (This)->lpVtbl -> Save(This,in_pContext,in_pWriter) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */



HRESULT STDMETHODCALLTYPE IDMPersist_Load_Proxy( 
    IDMPersist * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ IDMPersistenceReader *in_pReader);


void __RPC_STUB IDMPersist_Load_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);


HRESULT STDMETHODCALLTYPE IDMPersist_Save_Proxy( 
    IDMPersist * This,
    /* [in] */ IDMContextServices *in_pContext,
    /* [in] */ IDMPersistenceWriter *in_pWriter);


void __RPC_STUB IDMPersist_Save_Stub(
    IRpcStubBuffer *This,
    IRpcChannelBuffer *_pRpcChannelBuffer,
    PRPC_MESSAGE _pRpcMessage,
    DWORD *_pdwStubPhase);



#endif 	/* __IDMPersist_INTERFACE_DEFINED__ */


/* Additional Prototypes for ALL interfaces */

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif


